制限付き(root権限が必要な場合)でファイルを開くときに発生するエラーを処理するために、単純なコードスニペットを作成しました。次のコードは正常に機能し、o/pとしてエラーが発生します。
#!/usr/bin/perl
use strict;
use warnings;
use Try::Tiny;
my $file_name = "/var/log/test.txt"; # needs root permission to create file
if(open(HAN, ">$file_name")){
print "sucuessfully opened file \n ";
} else {
print "Error with if/else while openning file : $! \n";
}
o / p:
ファイルを開く際のif/elseのエラー:アクセスが拒否されました
同じコードでtry/catchまたはevalを使用して、ファイルを開くと
try {
open(HAN, ">$file_name");
} catch {
print "Error with try/catch while opening file : $_ \n";
};
また
eval {
open(HAN, ">$file_name");
};
print " Error with eval while opening file : $@ \n";
$_または$@に出力が表示されないのに、なぜこれが起こっているのでしょうか。