Perl:CPAN - 模块修改和添加功能

gau*_*inc 3 perl cpan module

我找到了一个我想改变的模块.

我的问题有一些这样的功能:

  • 我想为这个模块增加功能和灵活性.
  • 现在这个模块解决了任务,但是Web服务,就其编写的内容而言,改变了API
  • 而且,我想使用这个模块的代码.
  • 不是我的模块
  • 修复一些错误

我应该如何处于这种情况?

  • 继承此模块并添加功能并上传到CPAN?
  • 询问作者我的修改(和重装模块)?
  • 别的什么?

bri*_*foy 8

在您使用模块时,有多种方法可以修改模块,我在Mastering Perl中涵盖了大部分模块.

  • 正如Dave Cross提到的那样,向上游发送修复或成为该项目的一部分.听起来你有野心成为一个重要的贡献者.:)
  • 创建一个子类来替换方法
  • 覆盖或重载子例程或方法
  • 包装子程序以修改或调整输入或输出(例如Hook :: LexWrap)
  • 创建本地修补版本,并将其与主代码分开存储,以便在升级时不会消失

例如,在等待上游修复时,我经常直接在程序代码中执行此操作:

use Some::Module;  # load the original first
BEGIN {
   package Some::Module;
   no warnings 'redefine';
   if( $VERSION > 1.23 and $VERSION < 1.45 ) {
     *broken = sub { ... fixed version ... };
     }
   }
Run Code Online (Sandbox Code Playgroud)

这样,即使目标模块升级,我也可以修复.