如何将值推送到数组的Perl哈希?

时间:2010-09-23 14:07:50

标签: arrays perl hash

%TEST ; 

... 
for  {
   sub atest
   }
 sub atest {
 ...
    push $TEST { TEST1 }[0] = "some value " 
}

如何在不了解索引的情况下将值推送到数组的哈希值?

我如何实现这一目标?

3 个答案:

答案 0 :(得分:34)

这将通过“TEST1”键为哈希存储的数组末尾添加值。

push( @{ $TEST { TEST1 } }, "some value "); 

我使用@{...}取消引用数组引用。 Perl会自动创建内部数组引用。

答案 1 :(得分:8)

push函数接受一个数组,因此您必须将其引用回数组:

push @{$TEST{TEST1}}, "some value";

另外,你的风格让我觉得你没有使用strict pragma。编写该代码的更好方法是:

#!/usr/bin/perl

use strict;
use warnings;

sub atest {
    my $test = shift;
    push @{$test->{TEST1}}, "some value";
}

my %test;
atest(\%test);

use Data::Dumper;

print Dumper \%test;

答案 2 :(得分:1)

我想你想要:

%TEST;
$TEST{TEST1}[0] = "some value"
push @{ $TEST{TEST1} }, "some other value"

现在,$ TEST {TEST1}应该相当于["some value", "some other value"]