perl中的foreach循环如何与perl中的数组一起使用

raw*_*989 1 perl

这个程序应该执行三次,但只执行两次.任何人都可以解释这个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";
}
Run Code Online (Sandbox Code Playgroud)

ike*_*ami 11

perlsyn:

如果LIST的任何部分是一个数组,foreach如果你在循环体中添加或删除元素,将会非常困惑,例如splice.所以不要这样做.

由于这使得Perl感到困惑,你似乎更加困惑.试图做什么?以相反的顺序打印元素?如果是这样,你可以使用

for my $ele (reverse @arr) {
   print("$ele\n");
}
Run Code Online (Sandbox Code Playgroud)

要么

for my $i (1..@arr) {
   my $ele = $arr[-$i];
   print("$ele\n");
}
Run Code Online (Sandbox Code Playgroud)

要么

while (@arr) {
   my $ele = pop(@arr);
   print("$ele\n");
}
Run Code Online (Sandbox Code Playgroud)