我了解qw()
功能,但我在很多地方都看到过使用qw(:ALL)
。
使用此功能有什么好处?在哪里可以找到使用qw(:ALL)
的示例?
答案 0 :(得分:17)
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提供了一个名为{{1的函数}})。这没有技术上的原因;只是惯例。编写一个模块是完全可能的:
all
...从Foo :: Bar导入了所有函数。但人们不这样做是因为传统。
答案 1 :(得分:2)
某些模块使用:ALL
作为其import
方法的参数来导出所有可能的函数。有关示例,请参阅File::Spec::Functions。
use File::Spec::Functions qw(:ALL);
print tmpdir();