【发布时间】:2018-10-13 04:41:33
【问题描述】:
use strict;
my $anon = [1,3,5,7,9];
my $aref = [\$anon];
print "3rd element: " . $ { $aref } [2] . "\n";
我想通过$aref 变量获取匿名数组$anon 的第n 个元素。在代码中,我想通过将索引设为 2 来获取 $anon 的第三个元素,但它什么也没返回。如果我写$ { $aref } [0],那么它会返回类似 REF(0x7fd459027ac0)
如何获得第 n 个,例如 $anon 的第 3 个元素?
理由:
my @area = (
qw[1 3 5 7 9],
qw[2 4 6 8 0],
qw[a e i u o],
qw[b c d f g]
);
foreach my $row (@area) {
foreach my $cell (@$row)
{
# do some processing on the element
print $cell . " ";
}
print "\n";
}
【问题讨论】:
-
"
$aref变量上的匿名数组$anon的第n 个元素" "$aref变量上的作用"什么意思? -
“我想通过将索引设为 2 来获取 $anon 的第三个元素,但它什么也没返回” 没有子例程可以返回 nothing 并且没有变量可以包含 nothing。什么意思?
-
[ LIST ]基本上是do { my @a = LIST; \@a }的缩写,所以你有my @x = (1,3,5,7,9); my $anon = \@anon; my $y = \$anon; my @z = ($y); my $aref = \@z;并且你需要${ ${ ${ $aref }[0] } }[2]或$aref->[0]->$*->[2]来获得那个古怪的数据结构。当然,您应该将my @array = (1,3,5,7,9); my $anon = \@array;与$ { $aref } [2]或$aref->[2]一起使用。 -
my @foo = ( [ qw/a b c/ ], [ qw/1 2 3/ ], ... )- 你真的应该阅读perlreftut。 -
@simbabque 我看了一下链接;他们很有帮助。所以看来我基本上被困在试图引用
qw( )返回的列表的过程中,诀窍是将qw括在括号中(与您之前的评论相同),虽然我浏览了各种帖子,但我找不到它、文章、教程。
标签: perl