'使用警告'与'#!/ usr / bin / perl -w'有区别吗?

时间:2014-04-25 17:34:30

标签: perl

我在一个论坛(http://forums.devshed.com/perl-programming-6/email-send-attach-950337.html *)上读到,最好“使用警告”;而不是说'-w'。这是真的?我认为'-w'只是“使用警告”的简写;这是不正确的吗?

*在名为'FishMonger

的用户下面有几个条目

2 个答案:

答案 0 :(得分:12)

  

警告pragma是命令行标志-w的替代,但是pragma仅限于封闭块,而标志是全局的。有关详细信息和内置警告类别列表,请参阅perllexwarn

     

- warnings documentation

use warnings的优点是它可以关闭,只影响直接范围。

例如,考虑使用会发出警告的操作的模块:

package Idiotic;
sub stuff {
    1 + undef;
}

如果我们这样做,我们会收到警告

#!perl -w
use Idiotic; # oops, -w is global

Idiotic::stuff();

但不会收到任何警告

#!perl
use warnings;  # pragmas are scoped, yay!
use Idiotic;

Idiotic::stuff();

答案 1 :(得分:7)

是的,与warnings

有所不同
  

警告pragma是命令行标志-w的替代,   但是pragma仅限于封闭块,而旗帜则是   全球性的。

-w会在包含的代码中启用警告(通过use等),这可能是不可取的。