以下は、ある種のループの中で配列のハッシュを構築したいときに書き留めなければならないコードブロックの一般化です。配列のハッシュに新しい値を追加するための短縮形
#get value and key that I want to use
my $value = getvalue();
my $key = getKey();
#add value to hash using key
if($hash_of_arrays{$key}){
push(@{$hash_of_arrays{$key}}, $value);
}
else{
$hash_of_arrays{$key} = [$value];
}
if文は、このような単純なタスクのために書くのは非常に面倒ですが、それはそのキーがハッシュに定義されていない値をプッシュすると、問題が発生するために行われる必要がある場合。私はちょうどこれを書くための省略表現があるかどうか疑問に思っています - 私が書かなければならないものは$hash_of_arrays{$key}
3回です。
さて、私が最後に試したときに、どのようにエラーが発生したのかよく分かりません。私はそれが "ARRAYリファレンスではない"エラーを引き起こしたと思ったが、未定義の変数では起こりそうにない。ありがとう! – MattLBeck
これはundefsには起こりませんが、配列参照として扱う前に '$ HoA {$ key} 'に文字列のようなものを置くと起こります。 – hobbs
このメソッドは、自動ウイルス対策と呼ばれます。 Brian d Foyには、それをオフにする方法に関する記事があります:http://www.effectiveperlprogramming.com/blog/1256 – shawnhcorey