[linux] Perl pole a shift

Ondrej Jombik nepto na pobox.sk
Středa Listopad 26 16:15:23 CET 2003


On Wed, 26 Nov 2003, Milan Hromada wrote:

> Neviem preco pri pouziti foreach mi
> foreach neprejde cele pole
> napr
> #!/usr/bin/perl
> @test = ('raz','dva','tri','styri');
> foreach (@test) {
> 	print "pred shift: @test\n";
> 	shift(@test);
> 	print "po shift: @test\n";
> }
> Neviete preco neprejde cele pole ako pri nepouziti shift

V prvom rade si treba uvedomit, ze ten programovy kod je uplne zly
a vobec by sa tymto sposobom pouzivat nemal. Zasady slusneho
programovania hovoria, ze vnutri cyklu sa nema menit premenna, cez ktoru
iterujes.

Teraz k tvojej otazke. foreach() si vnutorne pamata v ktorej faze
iteracie sa nachadza. Na zaciatku je to nula. Postupne sa to zmeni na 1,
neskor na dva. Lenze ty medzicasom zmenis aj velkost pola a tak na treti
krat sa snazi vytiahnut $test[2], ktory neexistuje, kedze pole ma podobu
('tri', styri').

Napis co potrebujes urobit, mozno budeme vediet poradit. ;-)

--
  _/|   Ondrej Jombik - nepto na php.net - http://nepto.sk - ICQ #122428216
 <_  \  Platon SDG - open source software development - http://platon.sk
   `\|  Ako sa do hory vola, tak sa zhori traktor!  (c) 1999 Rattkin/MFF
    '`



Další informace o konferenci linux