Yanor.net/
Wiki
Blog
GitHub
Sandbox
開始行:
* パッケージ(オブジェクト)を調べる [#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"
}
** オブジェクトがパッケージを継承しているか調べる [#ad451...
use DateTime;
use UNIVERSAL qw/isa/;
$dt = DateTime->now;
if (isa($dt, 'DateTime')) {
print "dt isa 'DateTime'\n"
}
** オブジェクトのメソッドがどのパッケージにあるのか調べる...
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/
終了行:
* パッケージ(オブジェクト)を調べる [#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"
}
** オブジェクトがパッケージを継承しているか調べる [#ad451...
use DateTime;
use UNIVERSAL qw/isa/;
$dt = DateTime->now;
if (isa($dt, 'DateTime')) {
print "dt isa 'DateTime'\n"
}
** オブジェクトのメソッドがどのパッケージにあるのか調べる...
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/
ページ名: