perl - 将一个大模块分成多个文件

标签 perl

抱歉,我原来的问题似乎无法正确解释我在做什么和我想要实现的目标。这是一个更新的问题。

这可能是最简单的问题,但我找不到任何答案。

我有一个很大的 Perl 模块(比如 ABC.pm),随着我们添加新功能,它每天都在增长。这些功能中的大多数(几乎 90%)发送请求并处理响应。这是一个此类请求的一些代码。

sub UserDeleteRequest
{
    my ($self, $inputParam) = @_;
    my $config = $self->getConfig();
    return $self->_doRequest (REQUEST => 'UserDeleteRequest',
                              PARAM => $inputParam));
}

与此类似,编写了其他功能,并随着我们添加新请求而不断增长。

拥有一个大文件变得越来越难以维护。因此,我正在寻找一些最佳实践来使这更容易。我想到的一个想法是将这个大模块拆分成多个文件(如何??)

最佳答案

听起来你应该创建一个抽象类,你可以让其他类继承和覆盖它。以您相当模糊的示例为例,您的模块可能如下所示:

use strict;
package Foo;

sub new {

    my $class = ref(shift) || shift;
    my $self = {};
    bless( $self, $class );

    return $self;

}

sub processFooRequest {
    ...
}

sub processFooResponse {
    ...
}

您可能会有一个子类 Foo::Web,它可能看起来像这样:

use strict;
package Foo::Web;
use base "Foo";

sub processFooWebRequest {
    ...
}

sub processFooWebResponse {
    ...
}

在这种情况下,我没有费心使用新的构造函数,因为它继承自 Foo。我可以让这些方法具有相同的名称,它们将简单地覆盖——实际上这可能是我应该做的——保持名称相同但改变内部功能。 Foo 中定义的任何其他方法都将被继承。

真的你应该看看perlmod .一旦您开始理解它及其各种链接,您可能想看看 Moose .

关于perl - 将一个大模块分成多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11028152/

相关文章:

perl - 如何检查安装的 perl 模块的代码?

perl - 如何告诉 Perl 函数从特殊的 ARGV 句柄中读取文件?

perl selenium:Test::Exception、正确用法和好的代码示例?

perl - 有PDL的信号处理模块吗?

perl - 在 Perl 中解析带双引号的制表符分隔文件

regex - 如果在语句中找到单个单词,perl 正则表达式用于打印整个语句

perl - 有没有办法允许失败的上传使用 Perl CGI 脚本恢复?

c - 转换查找库

javascript - 使用 CSS 选择器定位存储在 javascript 元素中的一些数据

string - Perl中带有双冒号的奇数字符串解析