A füzérek, vagy sztringek igen gyakran elõfordulnak a Perl programokban.
Ennek az alapvetõ oka, hogy a Perl eredetileg UNIX rendszeradminisztrációs
feladatok automatizálására találták ki, és mivel a UNIX
a rossz nyelvek szerint nem más, mint szövegfájlok halmaza, ezért
természetes, hogy a füzérek kezelése igen erõs a Perl nyelvben.
A füzérek ugyanolyan skalár értékek, mint az egész vagy
a valós számok. A program szövegében elõfordulnak számos
helyen, általában ' vagy " jelek között, vagy
néhány esetben akár még anélkül is.
Az alapvetõ különbség az aposztróf és az
idézõjel használata között, hogy az aposztrófok
között leírt füzér az amit leírtunk, minden egyes karakter,
ahogy szerepel, míg az idézõjelek használatánál a Perl
részben értelmezi a füzért (interpolált füzér).
A következõ kis program
$a = 'alma';
print "$a\n";
print '$a\n';
kimenete
alma
$a\n
amibõl rögtön két dolog is látszik:
- Az interpolált füzéren belül nem csak a speciális
karaktereket, mint az újsor karakter értelmezi a Perl, hanem a
változóneveket is kifejti.
- A nem interpolált füzérekben viszont még a
fordított törtvonalat is közönséges karakternek tekinti a nyelv.
Nézzünk egy összetettebb példát:
$alma = 'kurta';
$korte[3] = 4;
$szilva = [ 13, 55, 33];
$szolo{ringlo} = 'hosszi';
$dinnye = { birka=>'emloves',
csirke=>'mador',
ponty=>'hallo'};
sub barack { return 'narancs' }
print "1=$alma $korte[3] $szilva->[0]\n";
print "2=$$szilva[1] $dinnye->{csirke} $$dinnye{ponty}\n";
print "3=@$szilva\n";
print "4=&barack\n";
aminek kimenete
1=kurta 4 13
2=55 mador hallo
3=13 55 33
4=&barack
Ebbõl az látszik, hogy nagyon sok mindent értelmez a nyelv az
interpolált füzérekben, de nem mindent. Például nem hív
meg szubrutint.
A füzérekkel kapcsolatban mindenképpen érdemes megjegyezni azt, hogy
a Perl számára a füzér nem egy karaktertömb, mint a C
számára, hanem egy bájtsor. Ennek következménye,
hogy a Perl nem null karakterrel zárja le a füzéreket, hanem tárolja minden
egyes füzér hosszát. Emiatt a null karakter, éppen úgy, mint
bármilyen más bájtérték része lehet egy füzérnek.
|