%data = (
'digits' => [1, 2, 3],
'letters' => ['a', 'b', 'c']
);
我如何push
'4'
加入$data{'digits'}
?
我是Perl的新手。那些$
,@
,%
符号对我来说很奇怪;我来自PHP背景。
答案 0 :(得分:14)
push @{ $data{'digits'} }, 4;
$ data {'digits'}返回数组引用。把@ {}放在它周围“取消引用它”。以同样的方式,%{}将取消引用哈希引用,$ {}将是一个标量引用。
如果您需要将某些内容放入哈希引用中,即
$hashref = { "foo" => "bar" }
您可以使用:
${ $hashref }{ "foo2" } = "bar2"
或箭头符号:
$hashref->{"foo2"} = "bar2"
以某种方式,将引用视为与变量名称相同的内容:
push @{ $arrayref }, 4
push @{ "arrayname" }, 4
push @arrayname , 4
事实上,这就是“软引用”。如果你没有打开所有的严格性,你可以直截了当地说:
# perl -de 0
DB<1> @a=(1,2,3)
DB<2> $name="a"
DB<3> push @{$name}, 4
DB<4> p @a
1234
答案 1 :(得分:2)
push @{data{'digits'}}, 4;
@ {}从引用中生成一个数组(data{'digits'}
返回一个数组引用。)然后我们使用我们得到的数组将值4推送到哈希数组中。
这link有助于解释它。
我使用此link来解决有关Perl中哈希值的任何问题。
答案 2 :(得分:2)
对于异国情调但非常讨人喜欢的选项,请查看autobox::Core
CPAN模块。
use autobox::Core;
my %data = (
digits => [1, 2, 3],
letters => ['a', 'b', 'c'],
);
$data{digits}->push(4);
$data{digits}->say; # => 1 2 3 4
答案 3 :(得分:1)