推送任意数量的哈希值的引用数组[perl]

时间:2011-09-26 06:10:31

标签: perl

假设我有一个数组:

@array = {
'A'    =>    "",
'B'    =>    0,
'C'    =>    0,
'D'    =>    0,
};

我可以通过以下方式添加元素:

$count = 0;
$array[$count]->{A} = "abcd";
$array[$count]->{B} = 789;
$array[$count]->{C} = 456;
$array[$count]->{D} = 123;

和另一个元素,

$count++;
$array[$count]->{A} = "efgh";
$array[$count]->{B} = 111;
$array[$count]->{C} = 222;
$array[$count]->{D} = 333;

如何使用push?

向@array添加元素

1 个答案:

答案 0 :(得分:4)

您拥有的第一个结构是hash reference,而不是array。您无法通过Hashpush添加值。 push只会在array上运行。如果您希望为hash reference添加值,则需要使用->表示法或取消引用。

$hash->{ 'key' } = $val;  // ->
%{ $hash }{ 'key' } = $val;  //dereferencing

如果array reference内有hash reference,您可以按照与上述相同的方式访问它。

$hash->{ 'array key' }->[$index] = $val;
@{ $hash->{ 'array key' }}[$index] = $val;

至于创建数组,您使用(),如此

my @array = ( "One", "Two", "Three" );

另一种选择是使用qw()快捷键,如此

my @array = qw(one two three);

此外,您可以使用[]

通过引用创建数组
my $array_ref = [ 1, 2, 3 ];

最后,要将值推送到使用push

的数组
push(@array, $value);

尽管如此,推送作为列表上下文功能可以写成没有。

push @array, $value;