导入模块时我对某些东西感到困惑,比如:
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也使用它.
值得一提的是,使用面向对象的接口设计的模块通常不需要导入符号.