【发布时间】:2013-10-05 17:37:49
【问题描述】:
我在导入模块时对某些事情感到困惑,例如:
use POSIX;
&
use POSIX();
&
use POSIX qw(WNOHANG);
这些use有什么区别?
【问题讨论】:
标签: perl perl-module
我在导入模块时对某些事情感到困惑,例如:
use POSIX;
&
use POSIX();
&
use POSIX qw(WNOHANG);
这些use有什么区别?
【问题讨论】:
标签: perl perl-module
大多数模块使用Exporter 模块在被调用者的命名空间中公开函数/变量/常量。
use POSIX;
这只会将 POSIX 的 @EXPORT 中的所有符号导入调用模块的命名空间。
use POSIX();
这将不会将任何符号导入调用命名空间。但是它确实会加载模块,这意味着您可以调用 POSIX::strftime(...) 等函数。
use POSIX(WNOHANG)
这只会将符号WNOHANG 导入调用模块的命名空间。
如果你不熟悉@EXPORT 和@EXPORT_OK 数组,你一定要仔细阅读Exporter 的文档。使用Exporter 是Perl 中将符号从一个模块导出到模块的命名空间(调用命名空间)的标准方法。 POSIX 也使用它。
还可能值得一提的是,使用面向对象接口设计的模块通常不需要导入符号。
【讨论】: