如何在循环完成后从范围中访问 @missing 数组值?
我试图将其声明范围,但是当我打印出范围时,我没有得到任何值。 这是我的代码:
my $last= $order[0];
for my $cur ( @order[1..$#order] ) {
.
.
.
my @missing = grep { ! $b{$_} } @aa;
print Dumper @missing;
$last = $cur;
}
答案 0 :(得分:0)
目前它是一个循环我的变量,它的范围仅在for循环中。
如果要在封闭循环的范围内访问它,请在循环之前声明@missing。
my $last= $order[0];
my @missing = ();
for my $cur ( @order[1..$#order] ) {
my @aa= flat $last;
my @bb= flat $cur;
my %b = map { $_ => 1 } @bb;
@missing = (); # reset from last use
@missing = grep { ! $b{$_} } @aa;
print Dumper @missing;
$last = $cur;
}
print STDOUT "Final missing: ",@missing;
答案 1 :(得分:0)
您并没有尝试访问代码中的@missing
数组,因此我对您的意思有点困惑。但我假设你想要的是为每次迭代存储来自@missing
的不同元素。所以,做到这一点。
my @all_missing;
for .... {
...
my @missing = grep { ! $b{$_} } @aa;
push @all_missing, \@missing; # store ref to array
}
# all the "missing" elements are now stored in the two-dimensional array
# @all_missing
因为您使用词法变量@missing
,所以可以直接存储对它的引用。每次迭代都会超出范围并初始化为新的内存地址。