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

HASH(0x991f0dc)

所以上面的哈希引用在标量变量中存储为字符串,如果我们的话
在Perl程序中用“%”取消引用它会引发错误,

不能使用字符串(“HASH(0x991f0dc)”
“)作为HASH引用,而在tcpclient1.pl第49行使用”strict refs“时,< GEN0>第1行

以上是从Perl程序抛出的,我请求解决方案,将哈希字符串引用转换回Perl哈希引用.

解决方法

你无法将其转换回来.

HASH(0x991f0dc)不是哈希引用.它是变量的字符串表示形式,包含对该地址的散列的引用.你在deref它时描述的错误信息表明你有类似的东西:

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

现在这不起作用,因为实际的数据结构不存在.

看起来你通过GEN0文件句柄读取了一个套接字.向你发送数据结构的人做错了什么.

他们需要序列化数据,然后您需要将其反序列化.这样做的好方法是JSON.但你也可以使用StorableSereal.

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...