Chinaunix首页 | 论坛 | 博客
  • 博客访问: 319156
  • 博文数量: 48
  • 博客积分: 4510
  • 博客等级: 中校
  • 技术积分: 556
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-05 18:19
文章分类

全部博文(48)

文章存档

2012年(1)

2011年(9)

2010年(1)

2009年(12)

2008年(25)

分类:

2008-12-21 23:33:11

Perl 笔记之 use warnings; 和 -w 的区别


提示:我曾经对 Perl 中 use warnings; 和 -w 的差别比较困惑,这是我搞明白后的笔记,如果你对它们的差别不感兴趣,那么只要记住一点:用 use warnings; 后面的内容可以直接忽略。

再次提示:如果你打算看 Perl 的文档 perllexwarn 或者已经看过了,那也没有必要再往下看了 :-)



Perl 中 use warnings; 和 -w 的差别简单来说就是

一) warnings 起作用的范围是包含其的 block,而 -w 的作用却是全局的(虽然你可以通过 $^W 在某些 block 里面关掉 warnings, 但是这么做是有问题的);

二) 使用 warnings 你可以有选择的打开某些警告,或是有选择的关闭某些警告,但是 -w 就是要么是所有可选的警告,要么是根本没有可选的警告。

当然它们还存在一些更加微妙的差别,例如可以关闭打开的警告种类不同,等等。

关于 use warnings; 和 -w 的种种差别,以及使用 $^W 在 block 中关闭警告存在的问题,参见 perllexwarn。

$^W 还应参见 perlvar 中对其的描述。

如果 perl 给出一个警告,你想用 no warnings 将其关掉,但不清楚要关那个警告,可以先在 perldiag 中查找你要关掉的警告对应的域(category),然后使用 no warnings 'category-name'; 将其关掉。当然,关掉警告的前提是你确实知道你的代码没有问题 ;)

warnings 支持的所有 warnings 的列表参见 perllexwarn。

另外,使用 warnings, 模块的作者还可以自定义警告,参见 warnings 和 perllexwarn。

再次另外,use warnings; 和 use strict; 的作用并不重叠,事实上它们两个应该共同使用。strict 的使用参见 strict。

perl 和警告相关的选项还有 -W 和 -X,详见 perllexwarn 和 perlrun 对其的描述。

阅读(6227) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~