如何在Perl中引用哈希引用中的标量?

Fre*_*idt 0 syntax perl template-toolkit dbi

简单的问题:

我如何在一行上执行此操作:

my $foo = $bar->{baz};
fizz(\$foo);
Run Code Online (Sandbox Code Playgroud)

我试过了\ $ bar - > {baz},\ $ {$ bar - > {baz}}等等.这甚至可能吗?

-fREW

更新:好的,hashref来自DBI,我将标量引用传递给模板工具包.我想现在我更仔细地看待这个问题与TT如何做到这一点有关.实际上,我想说:

$template->process(\$row->{body}, $data);
Run Code Online (Sandbox Code Playgroud)

但TT没有那样工作,TT采用标量参考并将数据放在那里,所以我必须这样做:

$template->process(\$row->{body}, $shopdata, \$row->{data});
Run Code Online (Sandbox Code Playgroud)

无论如何,谢谢你的帮助.我至少只有一个参考而不是两个.

run*_*rig 5

\$bar->{baz}
Run Code Online (Sandbox Code Playgroud)

应该管用.

例如:

my $foo;
$foo->{bar} = 123;

my $bar = \$foo->{bar};

$$bar = 456;

print "$foo->{bar}\n";   # prints "456"
Run Code Online (Sandbox Code Playgroud)

在回答OP中的更新时,您可以:

\@$row{qw(body data)};
Run Code Online (Sandbox Code Playgroud)

这与\ @array不同,它会创建一个对数组的引用.以上将分发引用并列出两个引用.