おおいしつかさ


旅行とバイクとドライブと料理と宇宙が好き。
Ubie Discoveryのプログラマ。
Share:  このエントリーをはてなブックマークに追加

Perlでevalを使ってみる

続・初めてのPerl 改訂版

続・初めてのPerl 改訂版
Randal L. Schwartz, brian d foy, Tom Phoenix, 吉川 英興, 伊藤 直也, 田中 慎司, 株式会社ロングテール/長尾 高弘
オライリー・ジャパン
大型本
2006-10-21

 「 「続・初めてのPerl 改訂版」」を使ってPerlの勉強をしています。今日はevalについて。evalは関数で、ブロック内や文字列内をPerl構文として評価するのだけど、このあたりはRubyと一緒。でもRubyでは全然evalを使ったことがないので、初めてみたいなものです。おもしろいのが、eval中のエラーはプログラムが終了せずに、変数$@にエラーメッセージが格納されるところ。例外処理みたいに使えるようです。

#!/usr/bin/perl  
 
my ($a, $b) = @ARGV;  
my $c = eval{$a / $b};  
if ($@) {  
        print "err:$@";  
} else {  
        print "$c\n";  
}  
 
print "here is end of program!\n";  

 普通は0で除算する時点でエラーが発生してプログラムが終了しますが、evalを使うとエラーメッセージを表示して、さらに処理を続行することができます。ただし、Perl自身が停止するような致命的なエラーはキャッチできないとのこと。

[tsukasa@] $ ./test.pl 10 2  
5  
here is end of program!  
[tsukasa@] $ ./test.pl 10 0  
err:Illegal division by zero at ./test.pl line 4.  
here is end of program!  

 土日は旅行に出かけるので、今日、不在者投票をしてきました。

 ボクシングの亀田兄弟がテレビに出ています。彼らを見るたびに、ぼくは弟たちを思い出す。ぼくの弟たちは、あの亀田兄弟に顔も喋り方も言うこともよく似ているのです。他人とは思えん。