以前からNiconico(ニコニコ動画)を操作するパッケージモジュールNiconico.pmを作っていました(CPANと無関係、非公開)。このパッケージにはログインが必要な機能と不要な機能が同居しています。ログイン不要な機能だけを使うプログラムでもパッケージの使い方として、わざわざログインして使っています。プログラムによるログインが行われると、先にログインしていた自分がはじき出されてログアウトされてしまう。そこでログイン不要な機能を別モジュールにして使うようにすれば自分がログアウトされないことに気付きました(正直に言うと以前から気付いてたが面倒で後回しにしてた)。【重要】ログインが必要な機能を使う既存のプログラムに対しては互換(ソース変更なし)で継続使用したい。ログイン不要の機能ラッパーが両者のオブジェクトを作成します。同一LWPオブジェクトを使用する都合があるのでUser→Outsideへリファレンスをコピーして共用させます。ラッパーのオブジェクトが呼ばれた際にメソッド名を取得してUserにあればUserのメソッドを呼びます。なければOutsideのメソッドを呼びます。これで既存プログラムの互換を確保できます。メソッドが両者になければ、ない場合の診断メッセージをdieして終了します。Niconico::Outside;」に修正、ログイン/ログアウト処理も削除していきます。ソースと言ってもラッパーだけ。mojolicious。