web-dev-qa-db-ja.com

配列のPerlハッシュに値をプッシュするにはどうすればよいですか?

%TEST ; 

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

インデックスについて何も知らずに値を配列のハッシュにプッシュするにはどうすればよいですか?

どうすればこれを達成できますか?

14
Tree

これにより、「TEST1」キーによってハッシュに格納された配列の最後に値が追加されます。

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

@{...}配列参照を逆参照します。 Perlは、必要に応じて内部配列参照を自動的に作成します。

36
Ivan Nevostruev

Push 関数は配列を使用するため、これを参照して配列に戻す必要があります。

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

また、あなたのスタイルは、あなたが strict プラグマを使用していないと私に思わせます。そのコードを記述するより良い方法は次のとおりです。

#!/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;
9
Chas. Owens

私はあなたが望むと思います:

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

これで、$ TEST {TEST1}は["some value", "some other value"]と同等になるはずです。

1
mkb