如何将元素推入作为哈希值保持的数组引用?

pow*_*boy 10 perl

%data = (
    'digits' => [1, 2, 3],
    'letters' => ['a', 'b', 'c']
);
Run Code Online (Sandbox Code Playgroud)

我怎么能push '4'$data{'digits'}

我是Perl的新手.这些$,@,%符号看起来怪我; 我来自PHP背景.

eru*_*orm 14

push @{ $data{'digits'} }, 4;
Run Code Online (Sandbox Code Playgroud)

$ data {'digits'}返回一个数组引用.把@ {}放在它周围"取消引用它".同样,%{}将取消引用哈希引用,$ {}将引用标量引用.

如果你需要将一些东西放入哈希引用中,即

$hashref = { "foo" => "bar" }
Run Code Online (Sandbox Code Playgroud)

你可以使用:

${ $hashref }{ "foo2" } = "bar2"
Run Code Online (Sandbox Code Playgroud)

或箭头符号:

$hashref->{"foo2"} = "bar2"
Run Code Online (Sandbox Code Playgroud)

以某种方式,将引用视为与变量名称相同的内容:

push @{ $arrayref   }, 4
push @{ "arrayname" }, 4
push    @arrayname   , 4
Run Code Online (Sandbox Code Playgroud)

事实上,这就是"软参考".如果你没有打开所有的严格性,你可以字面意思:

# perl -de 0
  DB<1> @a=(1,2,3)
  DB<2> $name="a"
  DB<3> push @{$name}, 4
  DB<4> p @a
1234
Run Code Online (Sandbox Code Playgroud)

  • 非硬引用是符号引用. (2认同)