当我加载File::Find with 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.
将require
替换为use
。那就好了。
一般来说,使用require
的唯一的原因是如果你有一些特定的原因在运行时做延迟模块加载。通常,你不会。
如果您不想从模块中导入任何符号,则将空列表传递给use
,如下所示:
use File::Find ();
或
use File::Find qw();
Edit:如果您确实有合理的理由延迟模块加载,并且发现ikegami的解决方案太难看,您可以通过编写
在本地禁用警告:no warnings 'once';
生成警告的语句前的。这将对最内层封闭代码块的其余部分禁用特定的警告。要了解哪些警告消息属于哪些类,请参见perldiag.
对于初学者,不要这样加载文件。:)
如果有,只需添加:
$File::Find::name if 0;
最干净的方法是将$File::Find::name
更改为
do { no warnings 'once'; $File::Find::name }