package Base1; use Class::Std; my %foo : ATTR( :init_arg ); my %bar : ATTR( :init_arg ); sub foo {} package Base2; use Class::Std; my %baz : ATTR( :set ); sub foo {} package Der; use base qw( Base1 Base2 ); package Other; use Class::Std; my %qux : ATTR( :set ); package main; my $obj = Der->new({foo=>'foo val', bar=>42}); print $obj->_DUMP(); my $obj2 = Other->new(); print $obj2->_DUMP();