gpt4 book ai didi

perl - 将散列存储在散列中

转载 作者:行者123 更新时间:2023-12-04 16:23:30 24 4
gpt4 key购买 nike

我在使用 Perl 脚本时遇到了麻烦。我尝试将哈希存储在哈希中。脚本很简单:

use Data::Dumper;

my %h1=();
$h1{name}="parent";
my %h2=();
$h2{name}="child";

$h1{nested}=%h2; # store hash h2 in hash h1

print "h2:\n";
print Dumper(%h2); # works
print "h1{nested}:\n";
print Dumper($h1{nested}); # fails

结果:
h2:
$VAR1 = 'name';
$VAR2 = 'child';
h1{nested}:
$VAR1 = '1/8';

为什么 $h1{nested} 不是作为散列转储,而是作为某种奇怪的标量 (1/8) 转储?

PS:即使这个问题听起来微不足道-我搜索了SO但没有发现之前有人问过它。
PPS:我的 Perl 是为 x86_64-linux-gnu-thread-multi 构建的 v5.10.1 (*)
(有 53 个已注册补丁,请参阅 perl -V 了解更多详细信息)

最佳答案

您只能存储一个 hashref 在哈希中:

$h1{nested}=\%h2;

然后您将访问 %h2的名字做
$h1{nested}->{name}

在您的代码中, %h2 被强制为标量上下文,它向您显示“1/8”值并存储该值。

关于perl - 将散列存储在散列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6565286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com