Как цикл 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");
}