パッケージ中のメソッド一覧を取得する
PHPならそのままget_class_methods()という関数があるんですが。あまりスマートじゃない気がしますけど、こんな感じでいけました。
no strict 'refs'; my @methods = grep { $_ !~ /::/ } keys %{"PackageName::"}; print join("\n", @methods);
実行された時点でのシンボルテーブルに定義されたメソッドをすべて取得できるので、親クラスから継承されたものやClass::Accessor::Fastとかで動的に追加されたものもちゃんと拾えるみたいです。
パッケージ名からではなく、既存のインスタンスから取得したい場合はもう一工夫。
no strict 'refs'; my @methods = grep { $_ !~ /::/ } keys %{ref($instance).'::'}; print join("\n", @methods);
得られたメソッドが元々どのパッケージに属しているものなのかは、小飼氏のUNIVERSAL::whichを利用すれば一発で判るみたいです。