モジュールを使用しながら変更するにはさまざまな方法がありますが、それらのほとんどについては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 ... };
}
}
このように、ターゲット モジュールがアップグレードされても、修正が適用されます。