6

导入模块时我对某些东西感到困惑,例如:

use POSIX;

&

use POSIX();

&

use POSIX qw(WNOHANG);

这些有什么区别use

4

1 回答 1

13

大多数模块使用该Exporter模块在被调用者的命名空间中公开函数/变量/常量。

use POSIX;

这只会将 POSIX 中的所有符号导入@EXPORT调用模块的命名空间。

use POSIX();

不会将任何符号导入调用命名空间。但是它确实会加载模块,这意味着您可以调用诸如POSIX::strftime(...)等之类的函数。

use POSIX(WNOHANG)

这只会将符号WNOHANG导入调用模块的命名空间。

如果您不熟悉@EXPORTand@EXPORT_OK数组,您绝对应该阅读Exporter的文档。UsingExporter是 Perl 中将符号从一个模块导出到模块的命名空间(调用命名空间)的标准方法。POSIX也使用它。

还可能值得一提的是,使用面向对象接口设计的模块通常不需要导入符号。

于 2013-10-05T09:31:11.327 回答