与Exporter的兼容性5.57

时间:2014-12-10 14:34:09

标签: perl import backwards-compatibility

当我在一个应该与Exporter 5.57(Perl 5.8.3附带的那个)一起使用的模块中使用Exporter时,我是否应该更喜欢这四个版本中的一个?

# 1
use Exporter; 
our @ISA = qw(Exporter); 
our @EXPORT_OK = qw(some_func);

# 2
use Exporter;
our *import = \&Exporter::import;
our @EXPORT_OK = qw(some_func); 

# 3
use base 'Exporter';
our @EXPORT_OK = qw(some_func);

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

2 个答案:

答案 0 :(得分:1)

Perl 5.8.3附带Exporter 5.57,它甚至支持以下内容:

use Exporter qw( import );

这比继承自Exporter要好,而且比手动导入import要好。

答案 1 :(得分:1)

我个人倾向于使用:

use Exporter ();
our @ISA       = qw(Exporter);
our @EXPORT_OK = qw(...);

这适用于本世纪发布的每个版本的Perl和Exporter。

其他方式可能更紧凑,但上面的输入并不完全繁琐。而且每个模块只需要完成一次。其他方式是以与旧版Perl的兼容性为代价的,因此我坚持使用上述内容。