首页 > 解决方案 > 如何取消引用这个数组?以及如何将此数组存储到哈希中?

问题描述

我在绕过 Perl 的引用和解除引用时遇到了一些麻烦,我来自 C++ 背景,所以我理解解除引用和引用。只是 Perl 的语法让我头晕目眩。

我有这段代码,我正在尝试打印$obj->{numbers}

my @arr = (1,2,3,4,5,6);

my $test = "" . join(',', @arr). "" || '';

my @my_arr = ();

@my_arr = split (',', $test);

my $obj->{numbers} = \@my_arr;

print $obj->{numbers};

这将打印 ARRAY(0x1ac9af8).

我期待它打印出类似 1 2 3 4 5 6.

我也想像这样将这个数组存储在哈希中

my $this;
$this->{foo} = [ { bar => $obj->{numbers} } ];
print $this->{foo}[0];

这打印HASH(0x418b018)。我也想要这个打印1 2 3 4 5 6

我怎样才能在哈希中打印这个数组?

标签: arraysperlreferencehashmapdereference

解决方案


$obj->{numbers}ARRAY(0x1ac9af8)返回对数组的引用,这就是为什么您在打印时会看到类似的内容。

您可以使用取消引用数组@{ }。例如:

print "@{ $obj->{numbers} }";

印刷:

1 2 3 4 5 6

我使用了双引号,这样您就可以在数组的每个元素之间获得一个空格。

同样对于哈希中的数组:

print "@{ $this->{foo}[0]{bar} }";

另请参阅perldsc


推荐阅读