【问题标题】:how to convert the perl hash string reference to perl hash reference如何将 perl 哈希字符串引用转换为 perl 哈希引用
【发布时间】:2017-01-06 17:53:44
【问题描述】:
 HASH(0x991f0dc)

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

Can't use string ("HASH(0x991f0dc) ") as a HASH ref while "strict refs" in use at tcpclient1.pl line 49, <GEN0> line 1

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

【问题讨论】:

    标签: perl sockets hash reference dereference


    【解决方案1】:

    您无法将其转换回来

    HASH(0x991f0dc) 不是哈希引用。它是一个变量的字符串表示形式,其中包含对该地址的哈希值的引用。您在取消引用时描述的错误消息表明您有类似的东西:

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

    现在这行不通了,因为实际的数据结构不存在。

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

    他们需要序列化数据,然后你需要反序列化它。一个很好的方法是JSON。但您也可以使用StorableSereal

    【讨论】:

      猜你喜欢
      • 2012-11-11
      • 1970-01-01
      • 1970-01-01
      • 2019-03-07
      • 1970-01-01
      • 2020-01-02
      • 2014-03-31
      • 1970-01-01
      • 2016-08-31
      相关资源
      最近更新 更多