我有以下代码:
print Dumper($dec_res->{repositories}[0]);
print Dumper($dec_res->{repositories}[1]);
my @repos = ($dec_res->{repositories});
print scalar @repos . "\n";
,输出如下:
$VAR1 = {
'status' => 'OK',
'name' => 'apir',
'svnUrl' => 'https://url.whatever/svn/apir',
'id' => 39,
'viewvcUrl' => 'https://url.whatever/viewvc/apir/'
};
$VAR1 = {
'status' => 'OK',
'name' => 'CCDS',
'svnUrl' => 'https://url.whatever/svn/CCDS',
'id' => 26,
'viewvcUrl' => 'https://url.whatever/viewvc/CCDS/'
};
1
所以我的问题是为什么$dec_res->{repositories}
显然是数组而@repos
不是?
我在这里打印了尺寸,但即使尝试使用$repos[0]
访问元素仍会返回错误。
转储$repos[0]
实际上打印整个结构......就像转储$dec_res->{repositories}
答案 0 :(得分:9)
$dec_res->{repositories}
显然是一个数组
不是。它是数组引用。
但
@repos
不是?
这是一个数组。
您正在创建一个长度为一项的列表,该项是数组引用。然后,您将列表分配给数组,因此数组包含该单个项目。
您需要取消引用数组。
my @repos = @{$dec_res->{repositories}};
perlref详细介绍了Perl中的引用。