我试过,我已经在互联网上搜索了,此时我已经没有想法了。 我有一个有元素的数组。 我使用Dumper功能来确保元素存在但是,当我尝试访问单个项目时,我没有得到预期的输出。
有人请帮忙。
这是代码
print "<pre>Array: ".Dumper(@configFiles)."\n";
print "First: ".$configFiles[0]."\n";
print "Second: ".$configFiles[1]."</pre>";
以下是输出
Array: $VAR1 = [
'searchTables.json',
'NAM_database.json'
];
First: ARRAY(0x9a8f60)
Second:
如果您想知道如何分配数组元素,我会读取一个json文件,然后使用下面的函数对其进行转换。
sub parseJson{
my ($jfilename) = @_;
if(-e "$jsoncPath/$jfilename"){
return decode_json($json_data);
}else{
}
}
见下面的json
[
"searchTables.json",
"NAM_database.json"
]
我也试过去参考,如下所示,没有成功
print "<pre>First: ".@{$configFiles[0]}."</pre>";
给我下面的内容。
First: 2
答案 0 :(得分:3)
decode_json
返回对数组的引用而不是实际数组。
应该是:
my $configFiles = parseJson($jfilename);
print "<pre>Array: " . Dumper($configFiles) . "\n";
print "First: " . $configFiles->[0] . "\n";
print "Second: " . $configFiles->[1] . "</pre>";
或
print "<pre>Array: " . Dumper(@configFiles) . "\n";
print "First: " . $configFiles[0][0] . "\n";
print "Second: " . $configFiles[0][1] . "</pre>";
答案 1 :(得分:2)
@configFiles
不是您认为/期望的数组。第一个元素是数组引用,您需要取消引用它才能访问数组:
print "ARRAY: @{$configFiles[0]}\n";