我再次忘记了如何在{2}数组的循环中使$_
表示数组。
foreach(@TWO_DIM_ARRAY){
my @ARRAY = $_;
}
这是意图,但这不起作用。这样做的正确方法是什么?
答案 0 :(得分:5)
行my @ARRAY = @$_;
(而不是= $_;
)是您正在寻找的,但除非您明确要复制引用的数组,否则我会直接使用@ $ _。 / p>
嗯,实际上我根本不会使用$_
,特别是因为您可能想要遍历@$_
,然后在内部循环中使用隐式$_
同样,你可能会弄清楚哪个$_
是哪个,或者哪个甚至是合法的。这可能就是你首先要复制到@ARRAY的原因。
无论如何,这就是我要做的事情:
for my $array_ref (@TWO_DIM_ARRAY) {
# You can iterate through the array:
for my $element (@$array_ref) {
# do whatever to $element
}
# Or you can access the array directly using arrow notation:
$array_ref->[0] = 1;
}
答案 1 :(得分:4)
for (@TWO_DIM_ARRAY) {
my @arr = @$_;
}
答案 2 :(得分:4)
$_
将是数组引用(不是数组),因此您需要将其取消引用为:
my @ARRAY = @$_;