* パッケージ(オブジェクト)を調べる [#p6e1d10b]
** パッケージにある全てのメソッドを調べる [#n85528ac]
シンボルテーブルをダンプする。
 use DateTime;
 use Data::Dumper;
 print Dumper \%Data::Dumper::;

** オブジェクトにメソッドがあるか調べる [#t30fe9cf]
 use DateTime;
 use UNIVERSAL qw/can/;
 $dt = DateTime->now;
 if (can($dt, 'year')) {
    print "dt has 'year()'\n"
 }

** オブジェクトがパッケージを継承しているか調べる [#ad451a3a]
 use DateTime;
 use UNIVERSAL qw/isa/;
 $dt = DateTime->now;
 if (isa($dt, 'DateTime')) {
    print "dt isa 'DateTime'\n"
 }

** オブジェクトのメソッドがどのパッケージにあるのか調べる [#j1ecfa92]
 use DateTime;
 use UNIVERSAL::which;
 $dt = DateTime->now;
 print $dt->which('year') . "\n";
 print $dt->which('which') . "\n";

** 継承しているクラスを調べる [#a8829e9e]
パッケージ変数@ISAをダンプする。
 use Foo::Bar;
 use Data::Dumper;
 print Dumper @{Foo::Bar::ISA};
インスタンスから@ISAを参照する。
 my $bar = Foo::Bar->new;
 no strict 'refs';
 print Dumper @{ ref($bar) . "::ISA" };

** Class::Inspector [#u0248c51]
http://search.cpan.org/dist/Class-Inspector/

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS