The source program is:
 
#! /usr/bin/perl -w
my @test =qw /test1 test2 test3 test4 test5 test6 test7/;
my $count =0;
$total = @test;
foreach (@test){
 my $n= shift (@test);
 $count++;
 print "$n  $count of $total\n";
 print "@test\n";
  }
print "\n\n==================\n\n";
foreach (@test){
 $count++;
 print "$_  $count of $total\n";
 print "@test\n";
 }
 
 
Then the executed result is:
 
test1  1 of 7
test2 test3 test4 test5 test6 test7
test2  2 of 7
test3 test4 test5 test6 test7
test3  3 of 7
test4 test5 test6 test7
test4  4 of 7
test5 test6 test7

==================

test5  5 of 7
test5 test6 test7
test6  6 of 7
test5 test6 test7
test7  7 of 7
test5 test6 test7
 
My question is why in the first foreach cycle @test which has the 
(test5 test6 test7) are not executed.  Which means only half of orginal 
@test appear in the first foreach cycle.  I know it is the problem of 
shift.  But I do not know the reason.
 
Thanks.
 
Frank
 

 



---------------------------------
Do You Yahoo!?
150万曲MP3疯狂搜,带您闯入音乐殿堂
美女明星应有尽有,搜遍美图、艳图和酷图
1G就是1000兆,雅虎电邮自助扩容!

Reply via email to