我写了一个工作正常的脚本。但如果有的话,我正在寻找更好的选择:
这是我的逻辑: 来自Test.pl
use strict;
use warnings;
executeTest();
sub executeTest {
my $score = abc::executexyz($z,$x,$y);
}
来自abc.pm
sub executexyz {
#perform some operation
my $check = getscore();
return $check;
}
sub getscore {
#perform some operation
return $output;
}
1;
答案 0 :(得分:1)
设置软件包以便导出所选功能是常见的,也是可取的。然后,您将use packageName qw(f1 f2);
添加到使用这些功能的单元中,他们可以在没有f1()
的情况下说出f2()
和abc::
。当你这样做时,可以看一下脚本的顶部,看看使用了什么包,以及它们的功能。还有许多其他好处。
档案abc.pm
package abc;
use warnings;
use strict;
use Carp;
use Exporter;
our (@ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
@ISA = ('Exporter');
@EXPORT_OK = qw(executexyz do_more);
sub executexyz {
#perform some operation
my $check = getscore() or carp "Error: ";
return $check;
}
sub getscore {
#perform some operation
return $output;
}
sub do_more { }
1;
还有其他方法可以做到这一点。请搜索SO以获取包裹,你会发现很多。然后脚本(或其他包)可以use
这个包,只导入他们需要的功能。
use warnings;
use strict;
use abc qw(executexyz);
executexyz(); # can use it without abc::
行@EXPORT_OK = qw(...)
使列出的函数可供其他代码用于通过use
导入,因此可以在不指定abc::
的情况下使用它们,而包中的其他函数则不能。这是导出符号的首选方式。
如果您要为@EXPORT
添加类似的行,那么所有列出的函数都将被推入use
此包的任何单元的命名空间中。这几乎不是一件好事。
%EXPORT_TAGS
允许您通过仅询问标记名称来设置可导入的功能组。我添加它只是为了给你一个暗示,你可以用包管理做更多的事情。
这几乎没有开始这个话题。例如,请参阅perldoc的package页面以及更多perlmod页面。那里有书籍和许多教程。我的SO。
一旦你得到了软件包,下一个相关的东西就是查找类的编写方式。