繁体   English   中英

我应该在哪里放置两个Perl模块共有的代码?

[英]Where should I put code that is common to two Perl modules?

我正在创建几个Perl模块,它们将使用常用实用程序来打开和关闭文件。

例如,

mod1.pm

my $in, $out;

sub openf {
    my $fname = shift;
    open $in, "<",  $fname or die $!;
}

sub one {
    openf($path);
    ...
}

mod2.pm

my $in, $out;

sub openf {
    my $fname = shift;
    open $in, "<",  $fname or die $!;
}

sub two {
    openf($path);
    ...
}

现在,我应该在哪里放置openf以便代码不重复?

我会说最简单的解决方案。

创建第3个模块,Common.pm或Helpers.pm或MyUtils.pm - 存储所有常见的样板辅助子程序。

然后,您将从上面的两个模块以及其他任何模块中导入它。

稍微不同的方法是 - 而不是简单地use -commmon.pm - 来实际继承它的所有模块。 这样他们就可以按照OO方式扩展常用的工具。

我们实际上是通过一个大型项目来实现的,从BaseClass.pm或BaseClassPlus.pm这个子类中对几乎100%的模块进行子类化。 工作得很好,并且由于极少的样板,因此对于维护良好的代码非常有利。 (我觉得我们可以用Moose完成大部分工作,但那是在我知道Moose存在之前)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM