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

011*_*112 5 perl

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

*在名为'FishMonger的用户下的几个条目下

amo*_*mon 12

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

- warnings文件

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

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

package Idiotic;
sub stuff {
    1 + undef;
}
Run Code Online (Sandbox Code Playgroud)

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

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

Idiotic::stuff();
Run Code Online (Sandbox Code Playgroud)

但是不要发出任何警告

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

Idiotic::stuff();
Run Code Online (Sandbox Code Playgroud)


too*_*lic 7

是的,与警告有所不同:

警告pragma是命令行标志-w的替代,但是pragma仅限于封闭块,而标志是全局的.

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