use strict; use Data::Dumper; use Devel::Peek; use B::Deparse; use B::Concise; use B 'svref_2object'; use Devel::Size qw(size total_size); sub printdef { foreach (@_){ chomp; } foreach(@_){ print; } } sub BtoReg{ my @a = (); foreach(@_){ if($_->isa("B::SPECIAL")){ print "SPECIAL ".$B::specialsv_name[$$_]."\n"; } else{ print "ptr ".$$_."\n".Dumper($_->object_2svref()); } } } print Dumper(%B::SPECIAL::); print "\n\n PRINTDEF\n\n"; my $cv = svref_2object(\&printdef); print $cv; print "padlist fill ".$cv->PADLIST->FILL()."\n"; my @arr = $cv->PADLIST->ARRAY(); my @a2 = $arr[0]->ARRAY(); print "first PAD ARR\n"; print Dumper([BtoReg(@a2)]); @a2 = $arr[1]->ARRAY(); print "second PAD ARR\n"; print Dumper([BtoReg(@a2)]); sub printmy { for my $line (@_){ chomp $line; } for my $line2 (@_){ print $line2; } } print "\n\n PRINTMY\n\n"; $cv = svref_2object(\&printmy); print $cv; print "padlist fill ".$cv->PADLIST->FILL()."\n"; @arr = $cv->PADLIST->ARRAY(); @a2 = $arr[0]->ARRAY(); print "first PAD ARR\n"; print Dumper([BtoReg(@a2)]); @a2 = $arr[1]->ARRAY(); print "second PAD ARR\n"; print Dumper([BtoReg(@a2)]); print "\n\nprintdef ".size(\&printdef )."\n\n"; print "\n\nprintmy ".size(\&printmy )."\n\n"; print "\n\nprintdef\n\n"; my $walker = B::Concise::compile('-src','-exec',\&printdef); $walker->(); print "\n\nprintmy\n\n"; $walker = B::Concise::compile('-src','-exec',\&printmy); $walker->();