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) |