如何从Perl中的二维数组中提取数组?
我再次忘记了如何让$_
表示一个数组,当它处于一个二维数组的循环中时。如何从Perl中的二维数组中提取数组?
foreach(@TWO_DIM_ARRAY){
my @ARRAY = $_;
}
这就是意图,但这并不奏效。什么是正确的方法来做到这一点?
线my @ARRAY = @$_;
(而不是= $_;
)是你在做什么寻找,但除非你明确地想要复制引用的数组,否则我会直接使用@ $ _。
嗯,其实我不会用$_
可言,特别是因为你很可能想通过@$_
迭代,然后在内部循环使用隐$_
一样,那么你可以有一个烂摊子搞清楚其中$_
是哪个,或者甚至是合法的。这可能是你首先复制到@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;
}
为我的$ var语法+1。似乎很多人不会为此烦恼,尽管它提高了可读性。 – Sorpigal 2010-10-14 10:27:30
不过,为什么不能这样工作:foreach(@TWO_DIM_ARRAY){print join',',@ {$ _}; }毕竟,$ _是一个数组引用,@ {$ _}应该是一个数组。 – 2010-10-23 16:57:40
@Michael Goldshteyn:那也可以。 '@ {$ _}'与'@ $ _'相同。例如,我只是试过这个:'我@A =([1,2,3],[4,5,6],[7,8,9]); foreach(@A){print join(“,”,@ {$ _}),“\ n”; }' – Jander 2010-10-23 19:27:25
for (@TWO_DIM_ARRAY) {
my @arr = @$_;
}
的$_
将阵列引用(不阵列),所以你需要取消对它的引用为:
my @ARRAY = @$_;
你能告诉你开始用数据,并要使用结束了,即使在伪什么? – 2010-10-14 21:44:57