如何获取 Perl 对象(不是 class)的结构和继承历史?

How to get structure and inheritance history of a Perl object (not a class)?

use Mojo::UserAgent;
my $ua = Mojo::UserAgent->new;
my $tx = $ua->get( shift );

如何获取这些 Perl 对象的结构和继承历史($ua 和 $tx)?

Data::Dumper 只显示了一小部分结构和继承历史。

Perl 不跟踪变量的历史值。

Perl 不跟踪历史继承关系。

对象没有继承关系; class是的。


可以使用以下方法找到对象的当前结构:

use Data::Dumper qw( Dumper );

{
   local $Data::Dumper::Purity = 1;
   print(Dumper($o));
}

(它有局限性:只显示了 dualvars 的一个值;没有显示关联的魔法;等等。如果您需要更精确的表示,可以使用 Devel::Peek 的 Dump .)

对象 class 当前继承的 classes 可以使用以下方法找到:

use mro          qw( );
use Scalar::Util qw( blessed );

say join ", ", @{ mro::get_linear_isa(blessed($o)) };