はじめに
perlモジュールのサブルーチン一覧を表示したいときってありますよね。
ドキュメントに説明書きたいときか。class図的なヤツのmethodに書きたいとか。
短いヤツならコピペしてもいいですけど長いソースとかスクロールしてコピペしてとかやってもだるい!
なのでこちらのエントリーをもとにサブルーチン一覧を表示するワンライナーメモ
後でみるカンペ用に結果先出し
Hogeというモジュールのサブルーチン一覧を見たい時の例
# perl -MClass::Inspector -MData::Dumper -I'/home/hoge/perl/pm' -MHoge -e 'print Dumper (Class::Inspector->functions("Hoge"))' $VAR1 = [ '_private_func', 'func1', 'func2', 'func3' ];
あじぇんだ
- Class::Inspectorについて
- Class::Inspectorでサブルーチン一覧表示ワンライナー
1. Class::Inspectorについて
ほぼ参考サイトのまんまですが、下記のようなことができるみたいです
- パッケージがインストール済みかどうかをチェック
- パッケージ名から Package/Name.pm などへのファイル名に変換
- ある名前のサブルーチンが、そのパッケージで宣言されているかどうか
- そのパッケージで宣言されているすべてのサブルーチン名のリストを返却
などなど
参考
2. Class::Inspectorでサブルーチン一覧表示ワンライナー
はじめに下記のようなモジュールがある想定で話します。
- 構成
# pwd /home/hoge/perl/pm # ls -l -rw-rw-r-- 1 hoge hoge 53 1月 27 14:06 2015 Foo.pm -rw-rw-r-- 1 hoge hoge 110 1月 27 14:05 2015 Hoge.pm
package Hoge; use parent qw(Foo); sub func1 () {} sub func2 () {} sub func3 () {} sub _private_func () {} 1;
package Foo; sub foo () {} sub _private_foo () {} 1;
サブルーチンの一覧を表示する(そのクラスに実装されているもののみ)
# perl -MClass::Inspector -MData::Dumper -I'/home/hoge/perl/pm' -MHoge -e 'print Dumper (Class::Inspector->functions("Hoge"))' $VAR1 = [ '_private_func', 'func1', 'func2', 'func3' ];
サブルーチンの一覧を表示する(親も含む)
# perl -MClass::Inspector -MData::Dumper -I'/home/hoge/perl/pm' -MHoge -e 'print Dumper (Class::Inspector->methods("Hoge"))' $VAR1 = [ '_private_foo', '_private_func', 'foo', 'func1', 'func2', 'func3' ];
サブルーチンの一覧を表示する(親も含む、publicのみ)
_
(アンダースコア)のあるものはprivateメソッドとみなし、それ以外をpublicと見なすみたいです。
第2引数に'public'
か'private'
を指定するとどちらかのメソッドのみ表示します。
# perl -MClass::Inspector -MData::Dumper -I'/home/hoge/perl/pm' -MHoge -e 'print Dumper (Class::Inspector->methods("Hoge", "public"))' $VAR1 = [ 'foo', 'func1', 'func2', 'func3' ];
おわり
自分用メモでしたが、ちょこちょこ使えるときはあるかなーと!