使用父'出口商'与使用出口商'导入';

时间:2013-12-24 18:04:58

标签: perl import export

如果我使用第一个例子而不是第二个例子,我会得到什么?

package Some::Module;
use strict;
use 5.10.1;

use parent 'Exporter';
our @EXPORT_OK = qw(some_func);

package Some::Module;
use strict;
use 5.10.0;

use Exporter 'import';
our @EXPORT_OK = qw(some_func);

2 个答案:

答案 0 :(得分:7)

没什么,真的。出口商最初被设想作为基类工作;后来它被增强,允许您只导入其导入方法。现在没有理由继承它。

如果您正在编写可能与Perl 5.8.2及更早版本一起使用的代码,则应该需要足够版本的Exporter:

use Exporter 5.57 'import';

答案 1 :(得分:6)

use Exporter 'import'适用于Exporter 5.57+,自Perl 5.8.3以来已与Perl捆绑在一起。如果您需要支持与早期版本的Perl捆绑在一起的旧版Exporter,那么您应该从Exporter继承。

(Exporter是一个双生命模块,因此旧版Perl的用户可以在技术上升级Exporter而无需升级所有Perl;但是cpan工具的旧版本有时会出现升级双生命模块的问题,所以升级出口商可能对他们来说可能很棘手。)

如果您不关心Perl的过时版本,请务必使用use Exporter 'import'。 Exporter并不是真正以面向对象/类的方式编写的,因此没有真正的理由继承它。 (与我自己的导出器模块不同,Exporter::Tiny设计时考虑了继承/覆盖!)