UNIVERSAL::which、便利なんでちょいちょい使ってるんですが、ちょっと微妙なケースが。 こういう場合。 package Foo; sub hoge {} package Bar; *muge = \&Foo::hoge; use UNIVERSAL::which; print scalar Bar->which('muge'); これを実行すると Foo::muge と表示されるわけです。 見ればわかると思いますが、Fooにmugeなんてメソッドは存在しないわけでして。 なんでこんなことになっちゃうかというとwhichの引数で渡された値をそのまま使ってるのが問題なんですね。 同じ理由で下記のようなコードも package Foo; my $code = sub {}; package Bar; *muge = $code; use UNIVERSAL::which; print