Weblabor - A kiindulopont webmestereknek
Leírások+Referenciák / Perl röviden / Változók

A Perl nyelvben háromféle változó van:
  1. skalár ($)
  2. tömb (@), és
  3. hash (%)
A változók nincsenek elõre deklarálva, és bármelyik változó tárolhat füzért, egész számot, mutatót (ezek mind skalár értékek) akár ugyanaz a változó is egymás után hol ilyet, hol meg amolyat. Az is lehetséges, hogy egy tömb, vagy egy hash egyik eleme füzért, egy másik eleme számot egy harmadik meg akár mutatót tárol.

Bármilyen alfanumerikus karaktersorozat lehet változónév, még kulcsszó is, mint a

$if  $else $return $unless $while $or $and

mivel ezeket a Perl nem foglalja le magának. Amiket elõre lefoglal, azok az olyan változók, mint a $/, vagy $, meg a társaik. Ezeknek speciális jelentésük van. Amivel leggyakrabban fogsz találkozni ezek közül az a $_, amelyik a default változó. (Egy csomó függvénynél, program szerkezetnél ha nincs megadva valamelyik szerepre változó, akkor a Perl a $_ változót használja.)

A tömbváltozókat onnan lehet megismerni, hogy ezek elõtt nem $ hanem @ jel van. Ezeknek is lehet értéket adni, de természetesen nem skalár, hanem tömb értéket, például:

@tomb = (1, 2 , 3);

Itt a @tomb egy tömbváltozó, amelynek van három eleme. Az egyes elemekre a PASCAL, vagy C nyelvben megszokott módon lehet hivatkozni a [ és ] zárójelek használatával. Viszont ilyenkor már egy elemre hivatkozunk, ami nem tömb, hanem skalár, tehát ilyenkor már a $ jelet kell a változó elé írni:

$tomb[0]

ami a @tomb tömbváltozó elsõ elemét jelenti. (Hacsak a $[ változónak valahol nullától eltérõ értéket nem adtunk.)

A hash változó hasonlít a tömbhöz, de nem nullától n-ig megy az index, hanem bármilyen értéket felvehet. Lehet az index szám, string, mutató, vagy bármilyen más skalár érték. Amikor az egész hash változóra hivatkozunk, akkor % jelet írunk elé, amikor pedig az egyes elemeire, akkor $ jelet, mivel ilyenkor már egy eleme skalár érték. Az értékadás nagyon hasonló a tömb értékadáshoz:

%tomb = (1, 2 , 3 ,4 );

ami egy két elemû hash. Az egyik elem indexe 1, a másiké 3. Az egyik értéke 2, a másiké 4. Persze ez így elég olvashatatlan, és ezért a Perl nyelv nyújt egy sokkal olvashatóbb szintaxist is:

%tomb = (   1 => 2 ,
            3 => 4 ,
        );

A hash egyes elemeire pedig úgy lehet hivatkozni, mint a tömb elemeire, de nem szögletes, hanem kapcsos zárójelet kell használni:

$tomb{1}

aminek az értéke a példánál maradva 2. És most tessék kapaszkodni, mert kihajolni veszélyes!!

A következõ változók mind használhatók egy programon belül:

%valtozo $valtozo @valtozo

És ezek mindegyike másik változó, sõt még ilyen nevû szubrutin is lehet! Ezek után nem lehetetlen a következõ rövid program darab:

%valtozo = ( 'alma' => 'gyumolcs',
             'kutya' => 'allat', );
$valtozo = 3.14;
@valtozo = (55,13,32);

ami eddig mind más változónak adott értéket, de ezt még fokozhatjuk:

$valtozo[4]=$valtozo;

aminek a hatására a @valtozo tömb mérete automatikusan megnõ, $valtozo[3] nem definiált értéket kap, $valtozo[4] viszont a Ludolf féle szám népszerû közelítõ értékét kapja. Ezek után már senki sem csodálkozik azon, hogy a

$valtozo=4;

utasítás végrehajtása után akár a

$valtozo{$valtozo}=$valtozo[$valtozo];

utasítás is kiadható.