no warnings 'whatever'
404 Blog Not Found:perl - use warnings; # -w でなくて
# 2008年06月20日 mzp mzp *プログラム参考, Perl use warningsで再帰を書くと、毎回警告されるのがうざい。
http://b.hatena.ne.jp/mzp/20080620#bookmark-9012282
id:mzpさんのブクマ米にちょっくら反応。
再帰で警告出るのを回避するには「recursion」をつかえばおk。
no warnings 'recursion'; sub plus { my $count = shift || return 0; return plus($count-1) + $count; } print plus(100);
警告出ないお><
とまあコンナ感じでno warnings 'whatever'使えば解除したい警告だけを対象とすることができるの便利なのだ。
local $^Wの場合は全ての警告が解除されるので自分が意図してないものまで警告解除される危険性があるので使用はオススメしない。
でwhateverにどんなものがあるのかというと、結構多い。色々ある。下記の表をば。
all | closure | |
deprecated | ||
exiting | ||
glob | ||
io | closed | |
exec | ||
layer | ||
newline | ||
pipe | ||
unopened | ||
misc | ||
numeric | ||
once | ||
overflow | ||
pack | ||
portable | ||
recursion | ||
redefine | ||
regexp | ||
severe | debugging | |
inplace | ||
internal | ||
malloc | ||
signal | ||
substr | ||
syntax | ambiguous | |
bareword | ||
digit | ||
parenthesis | ||
precedence | ||
printf | ||
prototype | ||
qw | ||
reserved | ||
semicolon | ||
taint | ||
threads | ||
uninitialized | ||
unpack | ||
untie | ||
utf8 | ||
void | ||
y2k |
ツリー構造になってます。
「use warnings」と「use warnings 'all'」は等価。
まあいっぱいあるけど実際よく使うのは正直「redefine」くらいのものかと。
ちなみにredefineは関数の再定義した場合に出る警告ね。一時的に関数上書きとか良くあるパターンなので使用頻度は高い。
sub hoge {} no warnings 'redefine'; *hoge = sub {};
こんなん。
英語ドキュメントは→http://search.cpan.org/perldoc?perllexwarn
若干情報古いけどPerlデバッグ明快技法にもwarningsについての記述もあるのでそちらもオススメ。

- 作者: Martin Brown,岡田長治
- 出版社/メーカー: オーム社
- 発売日: 2001/05
- メディア: 単行本
- クリック: 1回
- この商品を含むブログ (4件) を見る