我正在尝试学习Perl并了解一些关于use模块的知识.
(假设use strict; use warnings;)
我知道use File::Find;加载模块的所有子程序.
据我所知,use File::Find qw(find);只加载find模块的子程序(虽然我可以使用其他子程序File::Find::finddepth).
那怎么File::Find ();办?具体来说,为什么空的parens?
tl; dr:它表示不导出任何内容而不是默认值.
长版:
File :: Find有our @EXPORT = qw(find finddepth);,因此默认情况下会导出这些子.如果我们只是使用该模块然后尝试将其称为find错误,因为我没有将正确的参数传递给它find但find 确实存在.
quentin@workstation:~ # perl
use File::Find;
find();
no &wanted subroutine given at /Users/david/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/File/Find.pm line 1064.
Run Code Online (Sandbox Code Playgroud)
在use语句中传递列表会覆盖默认值并仅导出您要求的子列表.空列表表示不会导出任何内容,因为find不存在而导致错误.这样:
quentin@workstation:~ # perl
use File::Find ();
find();
Undefined subroutine &main::find called at - line 2.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
766 次 |
| 最近记录: |