这个程序应该执行三次,但只执行两次。 任何人都可以解释这个foreach循环如何在perl中工作。
#!/usr/bin/perl
use strict;
use warnings;
my @arr=("sandeepr", "vijay","vikas");
for my $i( @arr)
{
print @arr;
my $b=pop(@arr);
print "\n $b";
}
答案 0 :(得分:11)
如果LIST的任何部分是数组,如果在循环体内添加或删除元素,
foreach
将会非常混乱,例如使用splice
。所以不要这样做。
由于这让Perl感到困惑,你似乎更加困惑。试图做什么?以相反的顺序打印元素?如果是这样,你可以使用
for my $ele (reverse @arr) {
print("$ele\n");
}
或
for my $i (1..@arr) {
my $ele = $arr[-$i];
print("$ele\n");
}
或
while (@arr) {
my $ele = pop(@arr);
print("$ele\n");
}