我正在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)
当然,您可能只想选择其中一种方法.我刚刚结合它们以避免重复示例.