2.3 perl 的内建警告機制
perl 可以被設定成通知使用者警告的方式,當有可疑的東西在你的程式中運作時。
使用 -w 在指令行,打開警告開關。
$perl -w my_program
或者,如果總是需要警告,你可以請求他們在 #!行。
#!/usr/bin/perl -w
這個也可以在非unix系統上運作, 傳統的習慣寫成這樣,因為路徑對perl
不會産生影響:
#!perl -w
如果是5.6或者以後的版本,你可以使用編譯指令打開warnings.(小心,
因為它不會起作用 對于早期的perl版本)
#!/usr/bin/perl
usr warnings;
現在,perl 會給一個警告,如果你把'12fred34'用作一個數字:
Argument "12fred34" isn't numeric
當然, 警告通常是對程式員有意義的,不是為了最終使用者。如果一個程式員
不看這個警告,它很可能沒有任何用處。 警告不會改變你的程式的行為,除非
他偶爾發生缺陷的時候。如果你得到一個警告消息 卻不能了解,你可以取得一個更長的
解釋通過使用 diagnostics編譯訓示。perldiag 首頁 有短的警告資訊也有長的詳細解釋。
#!/usr/bin/perl
use diagnostics;
當你添上了 use diagnostics編譯訓示,你的程式運作時看上去會暫停一會兒。
那是因為你的程式需要做很多工作(正在狼吞虎咽大塊的記憶體),當你正想讀詳細文檔
一旦perl 提醒你有錯誤。
如果需要,這可以作為一個加速程式的措施,一旦你不再需要讀這些警告文檔,你可以
删除 use diagnostics編譯訓示。(當然更好的做法是你可以修改自己的程式來避免産生
警告,這樣僅僅是減少讀取輸出).
一個更深的優化是使用一個perl的指令行選項 -M,隻有當需要的時候才載入編譯訓示
,避免每次都要修改源程式來使diagnostics有效或者無效。
$ perl -Mdiagnostics ./my_program
Argument "12fred34" isn't numeric in addition (+) at ./my_program line 17 (#1)
(W numeric) The indicated string was fed as an argument to
an operator that expected a numeric value instead. If you're
fortunate the message will identify which operator was so unfortunate.
當我們跑過代碼時,Perl 将能夠警告我們一個錯誤已經發生,我們将會指出它,但是不能
依賴這些文本和未來的perl的RELEASE版本的警告是一樣的。