我正在用OO写一个Perl模块Galaxy :: SGE :: MakeJobSH.
我想使用MakeJobSH-> new()而不是Galaxy :: SGE :: MakeJobSH-> new(),
或一些其他短名称.我怎样才能做到这一点?
解决方法
您可以建议您的用户使用
aliased模块来加载您的:
use aliased 'Galaxy::SGE::MakeJobSH'; my $job = MakeJobSH->new();
或者您可以将名称导出为名为$MakeJobSH的变量;
use Galaxy::SGE::MakeJobSH; # Assume this exports $MakeJobSH = 'Galaxy::SGE::MakeJobSH'; my $job = $MakeJobSH->new();
或者您可以导出一个返回您的类名的MakeJobSH函数:
use Galaxy::SGE::MakeJobSH; # Assume this exports the MakeJobSH function my $job = MakeJobSH->new();
我不知道这是一个伟大的想法,但是.人们通常不需要经常键入类名.
以下是您在上课中为最后两个选项所做的工作:
package Galaxy::SGE::MakeJobSH; use Exporter 'import'; our @EXPORT = qw(MakeJobSH $MakeJobSH); our $MakeJobSH = __PACKAGE__; sub MakeJobSH () { __PACKAGE__ };
当然,您可能只想选择其中一种方法.我刚结合起来,以避免重复的例子.