私はレガシーコードを扱っておりrequire
、 sub を定義する .pl ファイルが必要ですfoo
。私の問題は、main::
名前空間に既に別の sub がfoo
あり、現在扱っていないプログラムの一部で後で呼び出されることです。
私が必要とするファイルsub foo {}
は、通常呼び出される場所で foo が発生することを明らかに望んでいないため、定義します。私の場合、それは悪いことです。
私は*foo
グロブをいじってみました:
*old_foo = *foo;
require 'foo_killer.pl';
*foo = *old_foo;
もちろん、エイリアスを作成しただけなので (Brian d foy がMastering Perlの 133 ページで指摘しているように) *old_foo
、現在は「空の」サブルーチンを指すため、これは機能しません。
*foo{CODE}
エイリアシングする代わりに、何か別の場所にコピーする方法はありますか? それとも、これを解決するための別のアプローチがありますか?