请问:
use Cwd qw();
在 perl 中 mean 是什么意思?
我知道 qw 会给 () 内的每个元素添加引号,但是这种情况怎么处理呢?
请问:
use Cwd qw();
在 perl 中 mean 是什么意思?
我知道 qw 会给 () 内的每个元素添加引号,但是这种情况怎么处理呢?
qw()
是一种写空列表的花式方式。使用 ()
可以节省两个字符。
将空列表传递给 use
很重要,以避免导入。根据 use
文档:
如果您不想调用包的导入方法(例如停止更改您的名称空间),请显式提供空列表
例如,默认情况下,Cwd
模块会导出 getcwd
。如果我们给它一个空列表,就不会发生这种情况:
use strict;
use Cwd;
print "I am here: ", getcwd, "\n";
工作,但是
use strict;
use Cwd ();
print "I am here: ", getcwd, "\n";
使用"strict subs"时,编译将因为Bareword "getcwd" not allowed
而中止。
我相信由于在use Module
之后qw()
用于导入子例程,当它为空时,它只是加载了模块,而没有将任何子例程导入命名空间。
例如,由于未导入getcwd
,因此以下代码会引发错误:
#!/usr/bin/perl
use warnings;
use strict;
use Cwd qw();
my $dir=getcwd;
#without qw
use CGI;
my $q = CGI->new();
my $x = $q->param('x');
#with qw
use CGI qw/:standard/;
my $x = param("x")
源代码:http://www.perlmonks.org/?node_id=1701
大多数模块也有像:all或:standard这样的导入组。
Cwd::abs_path
)而不是根本不导入它。 - ikegami