我知道qw()
函数,但是我在很多地方看到了qw(:ALL)
的使用。
使用这个有什么优点?哪里可以找到qw(:ALL)
的使用示例呢?
我知道qw()
函数,但是我在很多地方看到了qw(:ALL)
的使用。
使用这个有什么优点?哪里可以找到qw(:ALL)
的使用示例呢?
qw(:ALL)
的意思与 (":ALL")
完全相同。它只是一个包含单个四个字符字符串的简单列表——冒号、大写字母A、大写字母L和大写字母L。没什么特别的。
许多 Perl 模块提供可以导入到您命名空间中的函数。例如,Carp
模块提供了像 croak
和 confess
这样的函数。许多这样的模块允许您指定要导入的函数列表:
use Carp "confess", "croak", "cluck";
use Carp qw( confess croak cluck ); # this means the same, but looks cleaner
有些模块允许您在列表中指定诸如":ALL"
、":all"
或"-all"
之类的内容,以指示您希望导入它们所有提供的函数。 File::Spec::Functions是一个实现了这一功能的模块示例:
use File::Spec::Functions ":ALL";
use File::Spec::Functions qw( :ALL ); # means the same again
冒号的原因是为了更清楚地表明您不是要求导入一个名为ALL
的函数(这样的函数可能存在 - 确实,List::MoreUtils提供了一个名为all
的函数)。这没有技术上的原因,只是惯例。完全可以编写一个模块,使得:
use Foo::Bar "ALL";
... 导入了来自Foo::Bar的所有函数。但人们不这样做是因为传统。
有些模块在其import
方法中使用:ALL
作为参数来导出所有可能的函数。请参见File::Spec::Functions作为示例。
use File::Spec::Functions qw(:ALL);
print tmpdir();