0
use strict;
my @a;
my @b = ();
@a = (3, 4);

push @b, [@a];

my @c = @b[0];
print @c;

如何正确检索@c?它告诉我标量值@b[0] 最好写成 $b[0]。

(出于隐私原因,这不是我的真实代码,但在真实代码中我有这样的内容:

my @a = @{$b[$i]};
print @a;

这表示“使用未初始化的值”,但仍会打印应有的内容。

4

2 回答 2

3

如果您存储了一个数组引用$b[0]-这是您的情况-那么您将其检索为

$ref = $b[0]    # I just want it as a reference

或者

@arr = @{$b[0]} # I want it as a (new) array

或者

$elt = $b[0][1] # I want to directly access the second element
$elt = $b[0]->[1] # alternative syntax, same thing.
于 2013-04-05T08:39:53.913 回答
2

有关数组访问语法的详细信息,请参阅 perldata

@c[0]是单元素数组 slice(!) $c[0]是正确的

$c[0]->[0]是“3”和$c[0]->[1]“4”

有关数组数组的更多详细信息,请参阅 perldsc 和 perllol

于 2013-04-05T08:32:26.220 回答