Как цикл foreach в Perl работает с массивами в 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";
}

1 ответ

Перлсин:

Если какая-либо часть 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");
}
Другие вопросы по тегам