导入模块时我对某些东西感到困惑,比如:
use POSIX;
&安培;
use POSIX();
&安培;
use POSIX qw(WNOHANG);
这些用途有什么区别?
解决方法@H_403_16@
大多数模块使用Exporter模块来公开被调用者命名空间中的函数/变量/常量.
use POSIX;
这只会将POSIX的@EXPORT中的所有符号导入调用模块的命名空间.
use POSIX();
这不会将任何符号导入调用命名空间.但它会加载模块,这意味着您可以调用POSIX :: strftime(…)等函数.
use POSIX(WNOHANG)
这只会将符号WNOHANG导入到调用模块的命名空间中.
如果你不熟悉@EXPORT和@EXPORT_OK数组,你一定要运行Exporter的文档.使用Exporter是Perl中的标准方法,可以将符号从一个模块导出到模块的命名空间(调用命名空间). POSIX也使用它.
值得一提的是,使用面向对象的接口设计的模块通常不需要导入符号.
use POSIX;
这只会将POSIX的@EXPORT中的所有符号导入调用模块的命名空间.
use POSIX();
这不会将任何符号导入调用命名空间.但它会加载模块,这意味着您可以调用POSIX :: strftime(…)等函数.
use POSIX(WNOHANG)
这只会将符号WNOHANG导入到调用模块的命名空间中.
如果你不熟悉@EXPORT和@EXPORT_OK数组,你一定要运行Exporter的文档.使用Exporter是Perl中的标准方法,可以将符号从一个模块导出到模块的命名空间(调用命名空间). POSIX也使用它.
值得一提的是,使用面向对象的接口设计的模块通常不需要导入符号.