【Perl】foreach で Use of uninitialized value in エラー

今日は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;
    } 
}

以上で警告が出なくなった。意外と見逃しがちな点だった。

ブログ主が運営しているゲームです。
こちらよりどうぞ