1package MyBase; 2use Class::Std; 3{ 4 my %public_of :ATTR( :init_arg<pub> ); 5 my %private_of :ATTR; 6 7 sub BUILD { 8 my ($self, $ident) = @_; 9 10 $private_of{$ident} = 'base priv'; 11 } 12} 13 14package MyDer; 15use base qw( MyBase ); 16use Class::Std; 17{ 18 my %public_of :ATTR( :init_arg<pub> ); 19 my %private_of :ATTR; 20 21 sub BUILD { 22 my ($self, $ident) = @_; 23 24 $private_of{$ident} = 'der priv'; 25 } 26} 27 28 29package main; 30 31my $rep = MyDer->new({ 32 MyBase => { pub => 'base pub' }, 33 MyDer => { pub => 'der pub' }, 34 })->_DUMP; 35 36my $hash = eval $rep; 37 38use Test::More 'no_plan'; 39 40ok !ref $rep => 'Representation is string'; 41 42ok $hash => 'Representation is valid'; 43 44is $hash->{MyBase}{pub}, 'base pub' => 'Public base attribute'; 45is $hash->{MyBase}{'????'}, 'base priv' => 'Private base attribute'; 46 47is $hash->{MyDer}{pub}, 'der pub' => 'Public derived attribute'; 48is $hash->{MyDer}{'????'}, 'der priv' => 'Private derived attribute'; 49