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