lor*_*ork 3 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};
Run Code Online (Sandbox Code Playgroud)
这将打印
ARRAY(0x1ac9af8).
我期待它打印出像
1 2 3 4 5 6.
我也想把这个数组存储在这样的散列中
my $this;
$this->{foo} = [ { bar => $obj->{numbers} } ];
print $this->{foo}[0];
Run Code Online (Sandbox Code Playgroud)
这打印HASH(0x418b018). 我也希望这个打印1 2 3 4 5 6。
我怎样才能在散列中打印这个数组?
$obj->{numbers}返回对数组的引用,这就是为什么您会ARRAY(0x1ac9af8)在打印时看到类似内容的原因。
您可以使用@{ }. 例如:
print "@{ $obj->{numbers} }";
Run Code Online (Sandbox Code Playgroud)
印刷:
1 2 3 4 5 6
Run Code Online (Sandbox Code Playgroud)
我使用了双引号,这样你就可以在数组的每个元素之间得到一个空格。
同样对于散列中的数组:
print "@{ $this->{foo}[0]{bar} }";
Run Code Online (Sandbox Code Playgroud)
另见perldsc
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |