die和warn
- die可以在出現錯誤的時候停止程序,並給出消息。默認會輸出出錯的程序名稱和出錯行號
- warn函數和die函數類似,但和die的區別是不會終止程序
- die和warn的參數末尾如果給了
\n
,將不會輸出出錯的程序名稱和出錯的程序行號 use autodie;
可以自動探測操作系統層面上的錯誤並停止程序
例如,下面打開文件的操作:
if ( ! open LOG "<" "/tmp/a.log" ){
die "open file wrong: $!";
}
上面$!
是收集操作系統報告的錯誤,並由perl報告出來。例如沒有/tmp/a.log文件,上面的程序段落就會報錯:
wrong open file: No such file or directory at 6.plx line 8.
其中的$!
對應的消息是"No such file or directory"。
並不是每個錯誤都會有操作系統對應的錯誤。有些錯誤是perl自身的問題,這時候就不需要$!
。
if ( @ARGV < 2 ){
die "wrong! get help!"
}
默認情況下,die都會自動加上程序名和發生錯誤的行號。如果不想要這些消息,可以手動在die的末尾加上\n
符號。
if ( @ARGV < 2 ){
die "wrong! get help!\n"
}
使用autodie特性,可以
#!/usr/bin/perl
use autodie;
open LOG,"<","/tmp/a.log";
close LOG;