如何调用名称较短的Perl类?

Gal*_*axy 9 perl module

我正在Galaxy::SGE::MakeJobSH用OO 编写一个Perl模块.

我想用MakeJobSH->new()而不是Galaxy::SGE::MakeJobSH->new()或其他一些短名称.我怎样才能做到这一点?

cjm*_*cjm 12

您可以建议您的用户使用别名模块加载您的:

use aliased 'Galaxy::SGE::MakeJobSH';
my $job = MakeJobSH->new();
Run Code Online (Sandbox Code Playgroud)

或者您可以在名为的变量中导出您的类名$MakeJobSH;

use Galaxy::SGE::MakeJobSH;  # Assume this exports $MakeJobSH = 'Galaxy::SGE::MakeJobSH';
my $job = $MakeJobSH->new();
Run Code Online (Sandbox Code Playgroud)

或者您可以导出返回类名的MakeJobSH函数:

use Galaxy::SGE::MakeJobSH;  # Assume this exports the MakeJobSH function
my $job = MakeJobSH->new();
Run Code Online (Sandbox Code Playgroud)

不过,我不确定这是多么伟大的想法.人们通常不必经常输入类名.

以下是您在课堂上为最后两个选项所做的事情:

package Galaxy::SGE::MakeJobSH;

use Exporter 'import';
our @EXPORT = qw(MakeJobSH $MakeJobSH);

our $MakeJobSH = __PACKAGE__;
sub MakeJobSH () { __PACKAGE__ };
Run Code Online (Sandbox Code Playgroud)

当然,您可能只想选择其中一种方法.我刚刚结合它们以避免重复示例.