しゃのんあどべんとかれんだー 13 日目 (Perl のエラー処理におけるちょっとした気遣い) 匿名 匿名 この記事は、しゃのんあどべんとかれんだー 13 日目の記事です。 ![Perl5](http://1.bp.blogspot.com/-ynQujHsGJPs/Vopxu63zCrI/AAAAAAAAAVg/I_MbqCh4k3U/s200/mime_application_x_perl_128px_1066327_easyicon.net.png) どうも、munepom (`@__munepom__`) です。 今回は、Perl のエラー処理のちょっとした小ネタです。 # それは、とあるプルリクエストのレビューにて... Perl スクリプトのエラー処理のサンプルコードを見ると、大抵は ``` #!/usr/bin/env perl use strict; use warnings; use utf8; eval { my $divide_by_zero = divide(100, 0); }; if ($@) { print "error: $@"; } sub divide { my ($x, $y) = @_; return $x / $y; } ``` のように、例外が発生した場合は $@ 変数を直接出力してると思います。 でも、これだとよろしくないみたいです。 eval 箇所で例外が発生すると、$@ 変数にエラーメッセージが格納されていますが、これが書き換えられないとは限らないため、 ``` #!/usr/bin/env perl use strict; use warnings; use utf8; eval { my $divide_by_zero = divide(100, 0); }; if (my $err = $@) { print "error: $err"; } sub divide { my ($x, $y) = @_; return $x / $y; } ``` と書くのが良いみたいです。 一旦、$@ に設定される値を適当な変数に突っ込んでおけば良い、ということですね。 より良いコードを目指して、レッツ Enjoy! (・ω・)ノ Tweet Share Share Share Share