在Perl中初始化数组的困难

时间:2015-06-18 14:39:17

标签: arrays perl hash

我有以下代码:

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}

一样

1 个答案:

答案 0 :(得分:9)

  

$dec_res->{repositories}显然是一个数组

不是。它是数组引用

  

@repos不是?

这是一个数组。

您正在创建一个长度为一项的列表,该项是数组引用。然后,您将列表分配给数组,因此数组包含该单个项目。

您需要取消引用数组。

my @repos = @{$dec_res->{repositories}};

perlref详细介绍了Perl中的引用。