如何取消引用这个数组?我如何将这个数组存储到散列中?
How to dereference this array? And how do I store this array into a hash?
我在绕过 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
.
我怎样才能在散列中打印这个数组?
$obj->{numbers}
returns 对数组的引用,这就是为什么在打印时会看到类似 ARRAY(0x1ac9af8)
的原因。
您可以使用 @{ }
取消引用数组。例如:
print "@{ $obj->{numbers} }";
打印:
1 2 3 4 5 6
我使用了 double quotes 这样您就可以在数组的每个元素之间得到一个 space。
与散列中的数组类似:
print "@{ $this->{foo}[0]{bar} }";
另见 perldsc
我在绕过 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
.
我怎样才能在散列中打印这个数组?
$obj->{numbers}
returns 对数组的引用,这就是为什么在打印时会看到类似 ARRAY(0x1ac9af8)
的原因。
您可以使用 @{ }
取消引用数组。例如:
print "@{ $obj->{numbers} }";
打印:
1 2 3 4 5 6
我使用了 double quotes 这样您就可以在数组的每个元素之间得到一个 space。
与散列中的数组类似:
print "@{ $this->{foo}[0]{bar} }";
另见 perldsc