A Perl nyelvben háromféle változó van:
- skalár ($)
- tömb (@), és
- 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ó.
|