[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