导入模块时我对某些东西感到困惑,例如:
use POSIX;
&
use POSIX();
&
use POSIX qw(WNOHANG);
这些有什么区别use
?
导入模块时我对某些东西感到困惑,例如:
use POSIX;
&
use POSIX();
&
use POSIX qw(WNOHANG);
这些有什么区别use
?
大多数模块使用该Exporter
模块在被调用者的命名空间中公开函数/变量/常量。
use POSIX;
这只会将 POSIX 中的所有符号导入@EXPORT
调用模块的命名空间。
use POSIX();
这不会将任何符号导入调用命名空间。但是它确实会加载模块,这意味着您可以调用诸如POSIX::strftime(...)
等之类的函数。
use POSIX(WNOHANG)
这只会将符号WNOHANG
导入调用模块的命名空间。
如果您不熟悉@EXPORT
and@EXPORT_OK
数组,您绝对应该阅读Exporter的文档。UsingExporter
是 Perl 中将符号从一个模块导出到模块的命名空间(调用命名空间)的标准方法。POSIX
也使用它。
还可能值得一提的是,使用面向对象接口设计的模块通常不需要导入符号。