如何将Perl哈希字符串引用转换为Perl哈希引用

3
 HASH(0x991f0dc)

上述哈希引用作为字符串存储在标量变量中,如果我们在Perl程序中使用“%”进行反引用,则会引发错误。

在使用“严格引用”时,无法将字符串(“HASH(0x991f0dc)”)用作HASH引用,在tcpclient1.pl的第49行,<GEN0>第1行

以上内容是从Perl程序中引发的,我请求解决方案将哈希字符串引用转换回Perl哈希引用。

1个回答

7

无法将此转换回去

HASH(0x991f0dc) 不是哈希引用。它是一个变量的字符串表示形式,该变量包含对该地址处哈希表的引用。当您解除引用时描述的错误消息指向您有类似于以下内容的东西:

my $foo = 'HASH(0x991f0dc)';
print %$foo;

现在这样做是行不通的,因为实际的数据结构并不存在。
看起来你是通过GEN0文件句柄读取的套接字。发送数据结构的人正在做错误的事情。
他们需要将数据序列化,然后你需要对其进行反序列化。一个好的方法是使用JSON。但你也可以使用StorableSereal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接