0

我的 perl 脚本生成一个具有以下 Data::Dumper 输出的变量。

$VAR1 = [
  {
    'displayName' => 'unconfirmed',
    'tagName' => 'unconfirmed'
  },
  {
    'displayName' => 'new',
    'tagName' => 'new'
  },
  {
    'displayName' => 'started',
    'tagName' => 'started'
  },
  {
    'displayName' => 'reopened',
    'tagName' => 'reopened'
  },
  {
    'displayName' => 'resolved',
    'tagName' => 'resolved'
  }
];

重新创建此输出的 perl 代码如下所示:

my $foo = ([
  {
    'displayName' => 'unconfirmed',
    'tagName' => 'unconfirmed'
  },
  {
    'displayName' => 'new',
    'tagName' => 'new'
  },
  {
    'displayName' => 'started',
    'tagName' => 'started'
  },
  {
    'displayName' => 'reopened',
    'tagName' => 'reopened'
  },
  {
    'displayName' => 'resolved',
    'tagName' => 'resolved'
  }
]);
print Dumper($foo);

问题 A:如何访问内容?

谢谢你的帮助!这是有关如何访问结构的示例。

for my $item (@{$foo}) {
    print $item->{tagName};
}

问题 B:语言上下文有什么好的参考:哈希、数组、不同括号的含义等?

注意:结构本身位于几个肥皂调用、xpath ( SOM->valueof) 和直接引用 ( $som->{tag1}->{tag2}) 的末尾,但我希望这个问题会更容易提出和回答。

4

3 回答 3

4

Perl 不创建无键散列。你在 $foo 那里看到的是一个数组引用,所以你必须做print $foo->[$_]{displayName} for 0 .. $#{$foo}.

好吧,作为参考,你不需要那个,你需要一个完整的介绍文本。请参考http://perl-tutorial.org

于 2013-02-27T18:56:49.993 回答
3

答案A:

由于您使用了对哈希和数组的引用(标量),因此您应该取消引用标量以访问元素。

例如,如果您愿意访问第三个哈希,您将访问它:

$foo->[2]->{"displayName"}; # accesses 'started'
$foo->[2]->{"tagName"}; # accesses 'started'

答案 B:

有关参考,请参阅

于 2013-02-27T18:55:46.220 回答
0

学习像这样的复杂 Perl 数据结构的一个好的开始是Data Structures Cookbook,它包含在每个 Perl 安装中(perldoc perldsc在命令行中输入)。

于 2013-02-28T09:20:44.627 回答