找回密码
 注册
查看: 2411|回复: 0

Perl 内嵌的警告(warnings)

[复制链接]
发表于 2011-11-13 09:49:45 | 显示全部楼层 |阅读模式
当程序中包含可能的错误时,可以要求Perl 警告你。运行程序时,可以在命令行中使用–w 这个参数把警告打开:
$ perl–w my_program
或者,如果一直都需要警告(warning),可以在#! 这一行加上-w,如:
#! /usr/bin/perl –w
这条命令甚至在non-Unix 系统中也有效,由于在这些系统中通常与Perl 的具体路径关系不大,因此可如下书写:
#! perl –w
在Perl5.6 或之后的版本中,可以使用pragma 来打开警告(warning).(注意,它对早期的Perl 版本无效)◆。
◆warnings progma 允许文字上的警告。你可以在pelllexwarn 的用户手册中找到详细信息。
#! /usr/bin/perl
use warnings;
现在,如果将‘12fred34’当作数字来用,Perl 将警告你:
Argument “12fred34”isn’t numeric
当然,警告通常只对程序员有意义,对普通用户则没什么用处。如果程序员没有看到警告(没使用警告),这并没什么好处。
警告除了在某些时候抱怨可能出错外,不会改变程序的行为。如果看到不能理解的警告信息,可以使用diagnostics pragma,
通过它可以看到更详细的信息。perldiag 的mangage 中有对短的warning(警告)和长的diagnostic(诊断)的描述。
#! /usr/bin/perl
use diagnostics;
当把use diagnostics 加入程序后,在每次调入程序时,它好象暂停了一会儿。那是因为Perl 做了大量的工作(占去大块内
存),使在当Perl 发现错误时,你能迅速的读其文档,如果有的话。这导致了一种对Perl 程序优化的方法,当不需要读警
告信息相关的文档时,将use diagnostics 去掉。(当然如果能修改程序,把引起警告的原因去掉,那是最好不过了。但只是
取消阅读这些文档已经足够。)
另一种优化方法是,在命令行中使用–M 这个参数,仅当需要diagnostics 时才用,而不用每次通过修改源代码来决定是否
激活diagnostics:
$ perl–Mdiagnostics ./my_program
Argument “12fred34”isn’t numeric in addition(+) at ./m_program line 17 (#1)
(Wnumeric) 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.
我们将指出代码中可能警告的地方。但在现今版本中的警告信息和将来版本可能不同。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|生物统计家园 网站价格

GMT+8, 2024-12-4 01:29 , Processed in 0.043097 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表