Perl的模块列表

Mah*_*mam 6 perl perl-module

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

use POSIX;
Run Code Online (Sandbox Code Playgroud)

&

use POSIX();
Run Code Online (Sandbox Code Playgroud)

&

use POSIX qw(WNOHANG);
Run Code Online (Sandbox Code Playgroud)

这些有use什么区别?

Nik*_*hil 13

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

use POSIX;
Run Code Online (Sandbox Code Playgroud)

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

use POSIX();
Run Code Online (Sandbox Code Playgroud)

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

use POSIX(WNOHANG)
Run Code Online (Sandbox Code Playgroud)

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

如果您不熟悉@EXPORT@EXPORT_OK数组,那么您一定要浏览Exporter的文档.使用Exporter是Perl中的标准方法,用于将符号从一个模块导出到模块的命名空间(调用命名空间).POSIX也使用它.

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