今日のはまりどころ。
sub list_process{ my ($name,$list) = @_; if(@$list > 0){ die "no data\n"; }else{ foreach(@{$list || []}){ # 適当な処理を行う } } } my @list = (); # # (このあたりの処理で@listに適当にハッシュを詰めこむ) # my $name = "$list[0]{name}"; ## (1) list_process($name,\@list); ## (2)
この処理のなかで、(2)のところで、@listの要素が空の場合、「no data」と出力して死ぬハズ。
と思ってたのだが、実際には、$list[0]に空のハッシュが必ず入っている。
ちなみに、
"$list[0]{'test'}"; "$list[1][3]"; # とすると、 [ {}, [] ]
な配列ができるし、
"$list[100]{a}";
とすると、添字0から99まではundefで、100に空のハッシュが入った@listが出きる。
この副作用、わかりにくすぎ、、、