Perl数组具有值但无法访问它们

时间:2014-08-28 13:45:39

标签: arrays json perl

我试过,我已经在互联网上搜索了,此时我已经没有想法了。 我有一个有元素的数组。 我使用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

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";