在P e r l中,d i e函數可以用來在出現錯誤的時候停止解釋程序的運行,并輸出一條有意義的
出錯消息。正如你在前面已經看到的那樣,只要調用d i e函數,就能夠輸出類似下面的消息:
???died at scriptname line xxx
d i e函數也可以帶有一系列的參數,這些參數將取代默認消息而被輸出。如果消息的后面
沒有換行符,那么消息的結尾就附有at scriptname line xxx字樣:
???die "Cannot open";???#prints "Cannot open at scriptname scriptname line xxx"
P e r l中有一個特殊的變量$ !,它總是設置為系統需要的最后一個操作(比如磁盤輸入或輸
出)的出錯消息。當$ !用于數字上下文時,它返回一個錯誤號,這個號可能對任何人都沒有
什么用處。在字符串上下文中, $ !返回來自你的操作系統的相應的出錯消息:
???open(MYFILE, "myfile") || die "Cannot open myfile: $!\n";
不要使用$ !的值來檢查系統函數的運行是失敗還是成功。只有當系統執
行一項操作(比如文件輸入或輸出)之后, $ !才有意義,并且只有在該操作
運行失敗后, $ !才被設置。在其他時間中, $ !的值幾乎可以是任何東西,并
且是毫無意義的。
不過有時并不想使程序停止運行,只是想要發出一個警告。若要創建這樣的警告, P e r l有
一個w a r n函數可供使用。w a r n的運行方式與d i e完全一樣,你可以從下面這個代碼中看出來,不過差別是它的程序將保持運行狀態:
???if(! open(MYFILE, "output)) {
??????warn "cannot read output: $!";
???} else {
??????;???# Reading output...
???}
出錯消息。正如你在前面已經看到的那樣,只要調用d i e函數,就能夠輸出類似下面的消息:
???died at scriptname line xxx
d i e函數也可以帶有一系列的參數,這些參數將取代默認消息而被輸出。如果消息的后面
沒有換行符,那么消息的結尾就附有at scriptname line xxx字樣:
???die "Cannot open";???#prints "Cannot open at scriptname scriptname line xxx"
P e r l中有一個特殊的變量$ !,它總是設置為系統需要的最后一個操作(比如磁盤輸入或輸
出)的出錯消息。當$ !用于數字上下文時,它返回一個錯誤號,這個號可能對任何人都沒有
什么用處。在字符串上下文中, $ !返回來自你的操作系統的相應的出錯消息:
???open(MYFILE, "myfile") || die "Cannot open myfile: $!\n";
不要使用$ !的值來檢查系統函數的運行是失敗還是成功。只有當系統執
行一項操作(比如文件輸入或輸出)之后, $ !才有意義,并且只有在該操作
運行失敗后, $ !才被設置。在其他時間中, $ !的值幾乎可以是任何東西,并
且是毫無意義的。
不過有時并不想使程序停止運行,只是想要發出一個警告。若要創建這樣的警告, P e r l有
一個w a r n函數可供使用。w a r n的運行方式與d i e完全一樣,你可以從下面這個代碼中看出來,不過差別是它的程序將保持運行狀態:
???if(! open(MYFILE, "output)) {
??????warn "cannot read output: $!";
???} else {
??????;???# Reading output...
???}