要求File::Find:如何使用File::Find::name而不得到警告



当我加载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 }

相关内容

  • 没有找到相关文章

最新更新