The goal is to see the encapsulated data, like I've been doing for the last 26 years.
use 5.040;
use strictures;
use experimental 'class';
class Foo {
field @member = qw(e r t);
}
my $foo = Foo->new;
# use Data::Dumper qw(Dumper);
# say Dumper $foo;
# cannot handle ref type 16
# use DDS; DumpLex $foo;
# _dump_rv() can't handle 'OBJECT' objects yet
# use Data::Dx; Dx $foo;
# Can't handle OBJECT data
# use DDP; p $foo;
# Foo {
# public methods (1): new
# private methods (0)
# internals: (opaque object)
# }
# ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
The Tuple::Munge package on CPAN might help you.
use v5.38;
sub tuple_to_aref ( $t ) {
use Tuple::Munge ();
use experimental 'builtin';
use builtin 'blessed';
my $len = Tuple::Munge::tuple_length($t);
my $aref = [ map Tuple::Munge::tuple_slot($t, $_-1), 1 .. $len ];
if ( my $class = blessed $t ) {
return bless( $aref, "TUPLE_TO_ARRAY::$class" );
}
return $aref;
}
use experimental 'class';
use Data::Dumper;
class My::Class {
field $x;
ADJUST {
$x = 'Foobar';
}
}
my $object = My::Class->new;
print Dumper( tuple_to_aref( $object ) );
Sample output:
$VAR1 = bless( [
\'Foobar'
], 'TUPLE_TO_ARRAY::My::Class' );