arrays - 如何取消引用这个数组?我如何将这个数组存储到散列中?

标签 arrays perl reference hashmap dereference

我在绕过 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};

这将打印 数组(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

我怎样才能在散列中打印这个数组?

最佳答案

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

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

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

打印:

1 2 3 4 5 6

我用了double quotes这样您就可以在数组的每个元素之间获得一个空格。

对于散列中的数组类似:

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

另见 perldsc

关于arrays - 如何取消引用这个数组?我如何将这个数组存储到散列中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68621319/

相关文章:

c - 结构末尾大小为 0 的数组

arrays - 从 Swift 字典中的数组获取值

python - Numpy:计算所有行 i 的 sum(array[i, a[i]:b[i]])

perl - 错误 : Bareword "params" not allowed while "strict subs"

perl - 如何只读取文件的第一行

Python:动态存储字典的访问

c++ - 根据另一个数组对一个数组进行排序。如何?

php - Ruby 是否像 PHP 一样支持 var 引用?

c++ - 如果首先使用非常量初始化,为什么允许对 const 的非常量引用?

perl - 如何创建仅在一个请求期间全局的 'globally' 范围变量?