sid*_*com 3 import perl export
如果我使用第一个例子而不是第二个例子,我会得到什么?
package Some::Module;
use strict;
use 5.10.1;
use parent 'Exporter';
our @EXPORT_OK = qw(some_func);
Run Code Online (Sandbox Code Playgroud)
package Some::Module;
use strict;
use 5.10.0;
use Exporter 'import';
our @EXPORT_OK = qw(some_func);
Run Code Online (Sandbox Code Playgroud)
真的没什么.出口商最初被设想作为基类工作; 后来它被增强,允许您只导入其导入方法.现在没有理由继承它.
如果您正在编写可能与Perl 5.8.2及更早版本一起使用的代码,则应该需要足够版本的Exporter:
use Exporter 5.57 'import';
Run Code Online (Sandbox Code Playgroud)
use Exporter 'import'适用于Exporter 5.57+,自Perl 5.8.3以来已与Perl捆绑在一起.如果您需要支持与早期版本的Perl捆绑在一起的旧版Exporter,那么您应该从Exporter继承.
(Exporter是一个双生命模块,因此旧版本Perl的用户可以在技术上升级Exporter而无需升级所有Perl;但是旧版本的cpan工具有时会出现升级双生命模块的问题,因此升级Exporter可能对他们来说可能很棘手.)
如果你不关心Perl的古老版本,请务必use Exporter 'import'.Exporter并不是真正以面向对象/类的方式编写的,因此没有真正的理由继承它.(与我自己的导出器模块不同,Exporter :: Tiny在设计时考虑了继承/覆盖!)