久々に仕事でPerlを使う機会があり、作っているところなのですがかなり忘れててショッキングでした。
ハッシュの配列からとある1要素を取り出して引数として返す基本的な処理を作るのに、ハッシュのリファレンスの取り扱いでかなりはまってしまいました・・・
自戒の意味を込めて、そのサンプルを記録しておきます。
use strict;
my %hash_a;
test(\%hash_a);
print "ハッシュの値--> $hash_a{a} \n";
sub test
{
my $hash_ref = shift;
my @list_of_hashes;
# 配列に無名ハッシュを格納することによって、ハッシュのリストを作成
push @list_of_hashes, {"a"=>1, "b"=>2, "c"=>3};
push @list_of_hashes, {"a"=>4, "b"=>5, "c"=>6};
push @list_of_hashes, {"a"=>7, "b"=>8, "c"=>9};
%$hash_ref = %$list_of_hashes[0]; #これは駄目!! orz
%$hash_ref = %{$list_of_hashes[0]}; #{}で囲むのが正解
}
プログラミング言語は、ちょくちょく触っていないとすぐ忘れてしまいますね。