パッケージ中のメソッド一覧を取得する

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を利用すれば一発で判るみたいです。