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ó.