首先,我知道这是一个相当普遍的问题,但我已经环顾四周,似乎无法确定为什么会发生这种情况!
我正在从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};
任何人都有关于导致此错误的原因的建议?一如既往,非常感谢任何帮助。
答案 0 :(得分:2)
我不明白你要做的是什么,但下面是错误的原因。
map { $_->{MISC} } @{$id_array}
表示从给定的解除引用的arrayref获取每个元素并访问该元素的MISC
键(它期望该元素是hashref)。在您的情况下,元素是文字字符串(例如3233)。所以它看起来像这样:
3233->{MISC}
因此,您得到以下错误:
&#34;不能使用字符串(&#34; 3233&#34;)作为HASH参考,而严格参考&#34;在使用中