在perl中使用qw(:ALL)有什么用

时间:2014-04-25 11:17:47

标签: perl

我了解qw()功能,但我在很多地方都看到过使用qw(:ALL)

使用此功能有什么好处?在哪里可以找到使用qw(:ALL)的示例?

2 个答案:

答案 0 :(得分:17)

qw(:ALL)表示与(":ALL")完全相同。它只是一个单项列表,由一个四字符串组成 - 冒号,大写字母A,大写字母L,大写字母L.没有什么令人兴奋的。

许多Perl模块提供可以导入命名空间的函数。例如,Carp模块提供croakconfess等功能。许多此类模块允许您指定要导入的函数列表:

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提供了一个名为{{1的函数}})。这没有技术上的原因;只是惯例。编写一个模块是完全可能的:

all

...从Foo :: Bar导入了所有函数。但人们不这样做是因为传统。

答案 1 :(得分:2)

某些模块使用:ALL作为其import方法的参数来导出所有可能的函数。有关示例,请参阅File::Spec::Functions

use File::Spec::Functions qw(:ALL);
print tmpdir();