正常に表示されないエラーをキャッチされました。
時に問題が発生します。カスタムエラー処理は、私が把握することができないよう、私はあなたたちが私を助けることを願って、問題が生じています
メインファイル
use strict;
use warnings;
# signal handling
$SIG{__DIE__} = sub {
my $error = @_;
chomp $error;
print "die: $error\n";
};
require mod;
mod->get_stat();
:
私が使用
- がカスタム私は別々のモジュールで
例をファイル::スタットを使用し
モジュール私はOR私のカスタムエラー処理を削除した場合、私は代わりにの MODを使用場合、ダイのは表示されませんを必要とし、今
die: 1
die: 1
die: 1
die: 1
die: 1
4
:
package mod;
use strict;
use warnings;
use File::stat;
sub get_stat {
my $file_path = "test.txt";
my $file_size = stat($file_path)->size;
print $file_size;
}
1;
これは、次のような出力が発生します。 見るのは興味深いが、それはが実際にそれを必要としてSTATが作動している意味、(test.txtの4バイト)結果を生成ないことです。
だから、なぜ私はこのエラーを取得していますか?これは本当にエラーですか?デフォルトのperlエラー処理は "1"のエラーを無視しますか?
EDIT
ライナスKleenがで述べたよう、私は、配列内の要素の量を表示していますので、「1」になってしまう理由。
私が代わりにエラーの内容をプリントアウトした場合、私は次のエラーを取得する:
die: Your vendor has not defined Fcntl macro S_ISVTX, used at c:/Perl64/lib/File/stat.pm line 37.
die: Your vendor has not defined Fcntl macro S_IFSOCK, used at c:/Perl64/lib/File/stat.pm line 41.
die: Your vendor has not defined Fcntl macro S_IFBLK, used at c:/Perl64/lib/File/stat.pm line 41.
die: S_IFFIFO is not a valid Fcntl macro at c:/Perl64/lib/File/stat.pm line 41.
die: Your vendor has not defined Fcntl macro S_IFLNK, used at c:/Perl64/lib/File/stat.pm line 41.
4
しかし、それでもまだ、私は、カスタムのエラー処理なしで、私は得ることはありません、というエラーを取得しています。 1である@_
にあなたの要素の数を与えるあなたは、あなたのコード例では、スカラーコンテキストを使用している
my ($error) = @_;
へ
あなたのパッケージから最後の実行可能な文を返す必要があります – run
ああ...そうですね、WindowsでPerlを実行していますか?どちらですか? –
Windows 7 with ActivePerl 5.12 – Pmarcoen