Я пытаюсь получить объект Moose, который имеет ссылки на объекты Moose как просто вложенный набор простых типов данных Perl, которые я могу назвать хэш-ссылкой. например,
my $ref = { %{ $obj } }
и структура может выглядеть как
{
name => "bob",
phones => [
{
phone_number => "15555554698"
},
]
}
вместо
bless( {
name => "bob",
phones => [
bless( {
phone_number => "15555554698"
}, 'PhoneNumber' )
]
}, 'User' )
вот моя попытка
use overload '%{}' => '_hashref';
sub _hashref {
my $self = shift;
foreach my $attr ( $self->meta->get_all_attributes ) {
if ( $attr->has_read_method ) {
say $attr->name;
say $attr->get_value( $self );
}
}
return {};
}
к сожалению, get_value
, кажется, делает что-то рекурсивное и работает до тех пор, пока не выйдет из строя. Я попытался передать его __PACKAGE__
и просто 'User'
, но ни один из них не помог. Кто-нибудь есть какие-либо предложения о том, как я могу получить атрибуты и значения, чтобы я мог работать с ними? или другой умный способ сделать это? примечание: я знаю, что в настоящее время я возвращаю пустой хэш-код, на данный момент просто пытаюсь выяснить, как я могу получить значения