我在导入模块时感到困惑,比如:
use POSIX;
&安培;
use POSIX();
&安培;
use POSIX qw(WNOHANG);
这些use
之间有什么区别?
答案 0 :(得分:13)
大多数模块使用Exporter
模块来公开被调用者命名空间中的函数/变量/常量。
use POSIX;
这只会将POSIX的@EXPORT
中的所有符号导入调用模块的命名空间。
use POSIX();
这将不会将任何符号导入到调用命名空间中。但它会加载模块,这意味着您可以调用POSIX::strftime(...)
等函数
use POSIX(WNOHANG)
这只会将符号WNOHANG
导入到调用模块的命名空间中。
如果您不熟悉@EXPORT
和@EXPORT_OK
数组,则一定要查看Exporter的文档。使用Exporter
是Perl中将符号从一个模块导出到模块命名空间(调用命名空间)的标准方法。 POSIX
也使用它。
值得一提的是,使用面向对象的界面设计的模块通常不需要导入符号。