created: 2020-12-24T08:39:21.000Z

perlでサブルーチンにモンキーパッチをあてる

ライブラリ内部の挙動を一時的に変更したい時、以下のように書いてメソッドを上書きすることができる。

sub f {
    # 警告の抑制
    no warnings 'redefine';
    # Foo::Bar クラスの roo メソッドを書き換え
    local *Foo::Bar::roo = sub { my $self = shift; ... }
}

あまり褒められたやりかたでないのでデバッグ中などあくまで一時的な対処で使う。

ユーザーの問題解決とプロダクトの成功を導く エンジニアのためのドキュメントライティング
[ad] ユーザーの問題解決とプロダクトの成功を導く エンジニアのためのドキュメントライティング
ジャレッド・バーティ, ザッカリー・サラ・コ―ライセン (単行本)