我开始学习Perl,但是使用pop命令以相反顺序打印数组时出现问题。我希望使用pop而不是像reverse这样的其他命令,或者使用反向索引等技术。每当我用数组运行这个循环时,@ ananArray =(1,2,3,4,5);我最终只得到了#34; 5,4,3和#34;结果是。我的逻辑或语法有问题吗?
for ($i = 0; $i <= $#anotherArray + 1; $i++) {
if ($i == 0)
{
print "Third way: ";
}
$temp = pop @anotherArray;
print "$temp ";
}
答案 0 :(得分:3)
use strict;
use warnings;
my @array = (-1,0,1..5);
while (@array) {
my $e = pop @array;
print "$e\n";
}
答案 1 :(得分:2)
问题是阵列在弹出时会缩小,因此循环中$i
的限制会变小。
最好的方法是使用while
循环来保持从数组中弹出,直到它为空。
我不确定“第三方式”部分是什么意思,但你可以在循环之外打印出来。
喜欢这个
use strict;
use warnings;
my @anotherArray = (1, 2, 3, 4, 5);
print "Third way: ";
while (@anotherArray) {
print pop @anotherArray;
}
<强>输出强>
Third way: 54321
答案 2 :(得分:1)
只是另一种方式,因为它仍然是Perl:
use strict;
use warnings;
my @anotherArray = ( 1 .. 5 );
print pop @anotherArray while @anotherArray;
它只是说了什么:
从anotherArray打印popped-of-element,只要anotherArray中有许多元素。
这种循环或放置条件(如if
或unless
)对于单行代码是很好的,但是当它是整个BLOCK
代码时,它会非常皱眉。 / p>