Perlで開発
10年ぶりぐらいにPerlのプログラムを書こうとしたら、すっかり忘れていて大変だった。特に、warning がなかなか消えず困ったのがこれでした。数年後にやりそうなので、メモを。
CGI のパラメータの扱いで warning がでまくる件
Use of uninitialized value in string ...
というように、初期化されてないよーというエラーが出ます。例えば次のような場合。
#!/usr/bin/perl use strict; use warnings; use CGI; my $q = CGI->new(); my $m = $q->param('m'); if ($m eq '1'){ print "1\n"; } else { print "not 1\n"; }
これは、$m の部分に値がはいってない場合が起こりうるわけで、定義されてない場合がある。そのため、警告メッセージがでる。そのため次のように defined で確認をすればいいようだ。
#!/usr/bin/perl use strict; use warnings; use CGI; my $q = CGI->new(); my $m = $q->param('m'); if (defined $m) { if ($m eq '1'){ print "1\n"; } else { print "not 1\n"; } } else { print "not defined.\n"; }
これで警告は出なくなった。
参考サイト : http://om.pizzica.to/archives/2006/03/perl_use_of_uni.html
ネット上で探してると、strictを使ってなかったり、warningはずせとか、ありえん。