1

我不确定如何调用以下数据结构:哈希或数组。

我正在尝试向其中添加第三个元素。有人可以指导我。一些解释将不胜感激,因为我是 perl 和这个论坛的新手。

现有结构:

my $var= [
          bless( {
                   'name' => 'Name1',
                   'groupid' => '2',
                   'description' => 'Desc2'
                 }, 'my_type' ),
          bless( {
                   'name' => 'Name2',
                   'groupid' => '4',
                   'description' => 'Desc3'
                 }, 'my_type' ),
];

我想在其中添加以下内容:

bless( {
       'name' => 'Name3',
       'groupid' => '9',
       'description' => 'Desc4'
     }, 'my_type' ),

感谢您的时间和帮助!

4

3 回答 3

4

$var是一个“arrayref”。

使用数组,我们可以push在末尾添加元素:

my @a = (1, 2, 3);
push @a, 4;
print "@a"; # "1 2 3 4"

要将 arrayref 用作数组,我们必须取消引用它:

my $a = \@a;
push @{ $a }, 5;
print "@{$a}"; # "1 2 3 4 5"

在这些简单的情况下,取消引用可以缩短,所以我们可以写

push @$a, 5; # sic! two sigils

在你的情况下,这将是

push @$var, bless(...);
于 2012-09-21T14:46:38.380 回答
0

这是一个数组引用。您想将一个元素推送到 arrayref 上。

push( @{ $var }, $obj );

其中 object 是您要添加的祝福对象。

由于它是一个数组引用,因此您需要取消引用数组以将某些内容推到它上面,因为“推”期望一个数组而不是对一个数组的引用。

于 2012-09-21T14:46:36.087 回答
0

我不确定如何调用以下数据结构:哈希或数组。

$var 是对象数组的引用。

添加很简单:

my $obj = bless( { #Create object
   'name' => 'Name3',
   'groupid' => '9',
   'description' => 'Desc4'
}, 'my_type' ),
push( @$var, $obj ); #Add
于 2012-09-21T17:16:46.610 回答