CGI-BBS > CGI > Perl > Perlについて or と ||  のちがい。


カレッヂ
カレッヂ


質問者 みるみ  投稿日 2004/1/8(木) 08:23:36
perlについての質問です。
例外を取得しようと以下のようにやっています。

eval {
  open F,"< nothing.dat" or die;
  close F;
};
if ($!) {print "$!"; exit;}

or と || はほぼ同じ働きかと思ったのですが
「or」 と 「||」ではエラー内容が違っています。

こちらの場合どちらを使用したほうが良いのでしょうか?
よろしくお願いします。
--
WinXP + ActivePerl 5.6 です

プロバイダ参照:
サーバのOS:(未選択)
パソコンのOS:(未選択)
エディタ:
FTPソフト:
サーバ移転:していない
改造:(未選択)
CGI習熟度:(未選択)

回答者 しゅんじ  [削除]  投稿日 2004/1/9(金) 09:18:19
"||"の場合は、左辺が真なら値を返し、左辺が偽なら偽の値を返します。
"or"の場合は、左辺が真なら値を返し、左辺が偽なら続いて右辺の値を返します。
結局は同じなんだけども、微妙なニュアンスで、エラー結果が違うのかも・・・・

ちなみにevalっても、ファイルオープンの部分を括弧で仕切ってやると、
"or" "||"共に同じエラーになりました・・・・・
個人的には"or"を使ってます。
解釈が違ってたらすんません。

eval {
  open (F,"< nothing.dat") || die;
  close (F);
};
if ($!) {print "$!"; exit;}
質問者 みるみ  [削除]  投稿日 2004/1/9(金) 09:34:44
ご返答有難うございます。
そうでした。かっこでくくるべきでしたね。

open F,"< nothing.dat" || die; だと

open F,("< nothing.dat" || die);

と同じエラーとなるので優先順位が違うのかもしれませんね。
とりあえず解決しました。有難うございました。



このページは終了したので返信(回答)は書きこめません
 


Web裏技