今日はPerlで意外な簡単な所で久々に躓いたので備忘録。
foreach処理を行っていた時、
キー変数を宣言しているのにも関わらず Use of uninitialized value in エラーが出た。
具体的にはこんな感じ
my $max = 1; my @list; push (@list, 2); push (@list, 3); push (@list, 4); foreach my $key (@list){ if ($max < $key){ $max = $key; } }
対応策は下記のサイトに載っていた。
PerlのWARNINGをなくす
どうやら空の値を参照した場合にWarning警告が出ることがあるようだ。
対策は簡単。以下の一行をforeach文の後に追加した。
if (!$key){next;}
最終的なforeachの成果物は下記のような感じ。
foreach my $key (@list){ if (!$key){next;} if ($max < $key){ $max = $key; } }
以上で警告が出なくなった。意外と見逃しがちな点だった。