我知道qw()
函数,但我在许多地方见过qw(:ALL)
的使用。
使用它的优点是什么?在哪里可以找到使用qw(:ALL)
的例子?
发布于 2014-04-25 11:31:16
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"
之类的内容,以指示您希望导入它们所提供的所有功能。文件::Spec::Functions是这样做的模块的一个例子:
use File::Spec::Functions ":ALL";
use File::Spec::Functions qw( :ALL ); # means the same again
冒号的原因是,您没有请求导入一个名为ALL
的函数(可能存在这样的函数--实际上,名单::MoreUtils提供了一个名为all
的函数)。这没有技术上的原因,只是约定而已。完全有可能编写一个模块,以便:
use Foo::Bar "ALL";
..。从Foo::Bar导入所有函数。但人们不这么做是因为传统。
发布于 2014-04-25 11:30:41
一些模块使用:ALL
作为其import
方法的参数,以导出所有可能的函数。有关示例,请参见文件::Spec::Functions。
use File::Spec::Functions qw(:ALL);
print tmpdir();
https://stackoverflow.com/questions/23291534
复制相似问题