我找到了一个我想改变的模块。
我的问题有一些这样的功能:
我应该如何处于这种情况?
答案 0 :(得分:6)
在使用模块时,有多种方法可以修改模块,我在Mastering Perl中涵盖了大部分模块。
例如,在等待上游修复时,我经常直接在程序代码中执行此操作:
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 ... };
}
}
这样,即使目标模块升级,我也可以修复。
答案 1 :(得分:3)
我认为你的a和b选项几乎是最好的方法 - 虽然我可能会反过来这样做。
根据您的建议与模块作者联系。阅读模块 文档,以了解作者是如何联系的。一些 像电子邮件,有些像RT,其他有更具体的方法。 如果他们提供测试,作者往往更喜欢建议 可以自由应用的新/更改的代码和补丁。也许 代码在Github上。你可以分叉,做出改变并发送 作者拉请求?
如果作者没有反应,请考虑分叉或 子类化他们的代码。在这种情况下,命名很重要 希望人们能够找到您的模块以及原始模块 一。您还需要仔细记录它们之间的差异 你的版本和原版,以便人们可以选择 他们想要的一个。