next up previous index
Következő: 9.1.1.7 Szintaxis ...utasítások Fel: 9.1.1 Perl magyarul Előző: 9.1.1.5 Skalárok   Index

9.1.1.6 Tömbök

A Perl-ben használt tömböket inkább indexelt listáknak kéne nevezni a kiterjeszthetőségük miatt. Ha bármelyik típusban egy eddig nem létező elemnek adunk értéket az automatikusan definiálódik. A tömböket persze nem csak elemenként lehet feltölteni:
@tomb = ('elso', 2, $harom);	\# háromelemű tömb
%szinek = (			\# asszociatív tömb
'piros' => 0x00f,
'kék' => 0x0f0,
'zöld' => 0xf00,
);

És az utóbbival ekvivalens alak:

%szinek = (			
'piros' , 0x00f,
'kék' , 0x0f0,
'zöld' , 0xf00,
);		  #egyszerű felsorolás, párosával

Értékadásokban (rész)tömböket is értékül adhatunk. Ezekben az esetekben a balérték listája az első elemtől kezdve addig töltődik fel, amíg van új elem a jobb oldalon. Az értékadás akkor és csak akkor érvényes, ha a baloldalon legális balértékek szerepelnek.

($a,$b,$c)=(1,2,3)		#a változók sorban értéket kapnak
($a,$b,@maradek)=@valami	#ez is helyes

Tömb balértékként használata csak utolsó elemnek érdemes, mert egy korábbi tömb az összes jobboldalt magába olvassa. Ez jó a lokális paraméterek átvételénél. A $[ változó mutatja, hogy a tömbök melyik indexen kezdődnek (ez a C-ben 0). Ennek értéke módosítható, ezért a következő két értékadás ekvivalens:

@tomb=()			#üressé teszi a tömböt
$#tomb=$[-1;			#a tömb hosszát -1-re állítja

Skalár környezetben a tömb felhasználása a tömb aktuális hosszát adja vissza. Értékadásnál a résztömbök automatikusan elemenként bemásolódnak, így a keletkező tömb homogén lesz.

@tomb=(@lista1,@lista2,&alprg)

Egy asszociatív tömb skalár környezetben visszaadja, hogy van-e benne kulcs-érték pár. Ez csupán arra jó, hogy a hash-elő algoritmus hatékonyságát vizsgáljuk.




1999-09-17