Perl 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 ilyent, hol meg amolyant. 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 kapcsols 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' => 'gyimilcs',
             '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ó.

Verhás Péter Home Page . . . . . . Perl röviden, tartalomjegyzék