Perl:Perlのハッシュって展開されてたっけ?
久しぶりにPerlに触ったらちょっと嵌まった。
%in = (“aa”=> “11”);
push @hashdata,%in;
これ自体はループの中にあって、@hashdataという配列に%inというハッシュを
ガンガンいれていきたいということで、後で $hashdata[1]→{‘key’} って形で
各要素にアクセスしたいってことだ。
ところがこれをやると、ハッシュのキーと値が展開されてそのまま配列に入ってしまう。
つまり上記のばあい
@hashdata = (“aa”,”11″);
とおなじ事になってしまう。
正しくは
push @hashdata,\%in;
と書かないといけない(参照渡しってことだよな)みたいなのだが、
以前からこうだったっけ、ということが疑問である。
勝手に展開することなんてなかった気がする。
まあ、俺の場合、思い違いや勘違いは人より多いので昔からこうだったのかもしれないが、
昔仕事で書いたPerlプログラムで多用した方法なのでちょっと心配。
会社も変わってしまったのでソースみれんし。