不能将字符串用作HASH参考

时间:2017-04-25 08:14:32

标签: perl hash

这是我尝试访问的结构

Dumper $resourceAudit

$VAR1 = '{
  \'rh6\' => {
                    \'h\' => 1,
                    \'n\' => 1
                  },
  \'win2k8\' => {
                     \'h\' => 1,
                     \'n\' => 1
                   },
  \'win2k12\' => {
                        \'h\' => 3,
                        \'n\' => 3
                      },
  \'win2k3\' => {
                     \'h\' => 0,
                     \'n\' => 1
                   },
  \'usim\' => {
                               \'h\' => 4,
                               \'n\' => 4
                             }
}';

所以,我知道$ resourceAudit实际上是一个字符串,所以,%$resourceAudit肯定会给我Can't use string as a HASH reference错误。

有什么方法可以解决这个问题并访问'rh6'密钥吗?

1 个答案:

答案 0 :(得分:2)

$resourceAudit不包含对哈希的引用;它包含一个字符串。该字符串是Perl代码,在执行时将返回对哈希的引用。您可以使用eval EXPR运行Perl代码。

my $data = eval($serialized_data)
   or die("Error executing audit code: $@");

... %$data ...