您的位置:首页 > 其它

Learning Perl,4th Edition(2-3 内建警告)

2006-04-12 13:46 363 查看
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版本的警告是一样的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: