不能使用字符串作为HASH参考,而严格参考"正在使用

时间:2017-01-10 17:57:49

标签: perl dictionary hash hashmap

首先,我知道这是一个相当普遍的问题,但我已经环顾四周,似乎无法确定为什么会发生这种情况!

我正在从JSON文件中读取一些数据,基本上它只是一组表示ID的字符串。

我这样导入它:

 my $idFile='IDS.json';
 my $idJSON;



 {
         local $/;
         open my $fh, '<', $idFile or die $!;
         $idJSON = <$fh>;
         close $fh;
 }

 my $id_array = decode_json $idJSON;

这就是$id_array现在的样子:

$VAR1 = [
          '3233',
          '2758',
          '2797'
        ];

然后我使用哈希映射形式的MISC标记保存它们,但这是我的"Can't use string ("3233") as a HASH ref while "strict refs" in use "错误被抛出的地方:

my @decodedIDS = map { $_ ->{MISC}} @{$id_array};

任何人都有关于导致此错误的原因的建议?一如既往,非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

我不明白你要做的是什么,但下面是错误的原因。

map { $_->{MISC} } @{$id_array}

表示从给定的解除引用的arrayref获取每个元素并访问该元素的MISC键(它期望该元素是hashref)。在您的情况下,元素是文字字符串(例如3233)。所以它看起来像这样:

3233->{MISC}

因此,您得到以下错误:

  

&#34;不能使用字符串(&#34; 3233&#34;)作为HASH参考,而严格参考&#34;在使用中