从数组数组中检索数组?

时间:2013-04-05 08:19:52

标签: perl multidimensional-array reference

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;

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

2 个答案:

答案 0 :(得分: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.

答案 1 :(得分:2)

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

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

$c[0]->[0]为“3”,$c[0]->[1]为“4”

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