说use File::Spec;
和use File::Spec qw(rel2abs);
有什么区别?
信不信由你,我确实先在谷歌上搜索了一下,但我想使用和列表这两个词太模糊了,谷歌找不到任何有用的东西。
需要明确的是,我的问题是关于qw()
的使用而不是。我只是问它包含的列表。
use Module;
相当于
BEGIN {
require Module;
Module->import();
}
import
的作用取决于模块。它可能什么都不做,可能导出符号,也可能做其他事情。许多模块都有此导出的默认符号列表。
use Module LIST;
相当于
BEGIN {
require Module;
Module->import(LIST);
}
import
的作用取决于模块。它可能什么都不做,可能导出符号,也可能做其他事情。许多模块将导出指定的符号(而不导出其他符号(。
use Module ( );
和
use Module qw( );
相当于
BEGIN {
require Module;
}
不调用import
。
File::Spec没有定义或继承import
方法,因此use File::Spec;
和use File::Spec qw( rel2abs );
等效于use File::Spec qw( );
。(调用不存在的import
方法不会导致错误。(use File::Spec qw( rel2abs );
可能应该是use File::Spec::Functions qw( rel2abs );
。
我几乎从来没有use Module;
;我更喜欢指定要导入的符号。这有两个好处:
- 我不导入我不需要的符号。避免名称空间污染提供了一些小的好处;感到惊讶的机会更少">
- 阅读我的代码的人(包括我自己(可以很容易地找到提供导入符号的模块