当我像这样File::Find加载require时,我怎么能修改此脚本才能收到警告?
#!/usr/bin/env perl
use warnings;
use strict;
use 5.10.1;
require File::Find;
File::Find->import('find');
find( {
wanted => sub {
my $file = $File::Find::name;
#say $file;
},
no_chdir => 1,
},
shift );
输出:
#Name "File::Find::name" used only once: possible typo at ./perl9.pl line 11.
答案 0 :(得分:3)
只需将require
替换为use
即可。那就解决了。
通常,仅使用require
的原因是,如果您有某些特定的理由在运行时加载延迟模块。通常,你没有。
如果您只是不想从模块导入任何符号,请将空列表传递给use
,如下所示:
use File::Find ();
或
use File::Find qw();
修改:如果你做有合理的理由推迟加载模块,并且发现ikegami的解决方法太难看了,你可以通过写下来禁用本地警告: / p>
no warnings 'once';
在生成警告的语句之前。这将禁用最内层封闭代码块的其余部分的特定警告。要找出哪些类别中包含哪些警告消息,请参阅perldiag。
答案 1 :(得分:2)
对于初学者,请不要加载这样的文件。 :)
如果你这样做,只需添加:
$File::Find::name if 0;
干净的方法是将$File::Find::name
更改为
do { no warnings 'once'; $File::Find::name }