Ich versuche, ein Elch-Objekt zu erhalten, die Elch-Objekte als nur eine verschachtelte Reihe von einfachen Perl-Datentypen referenziert werden, die ich als ein Hashref verweisen kann. z.B..
my $ref = { %{ $obj } }
und die Struktur könnte wie folgt aussehen
{
name => "bob",
phones => [
{
phone_number => "15555554698"
},
]
}
anstelle von
bless( {
name => "bob",
phones => [
bless( {
phone_number => "15555554698"
}, 'PhoneNumber' )
]
}, 'User' )
hier ist mein Versuch
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 {};
}
leider get_value
scheint etwas Rekursives zu tun und läuft so lange, bis es zu einem Seg-Fehler kommt. Ich habe versucht, es zu übergeben __PACKAGE__
und einfach 'User'
aber beides scheint nicht zu funktionieren. Hat jemand irgendwelche Vorschläge, wie ich die Attribute und die Werte erhalten könnte, so dass ich mit ihnen arbeiten kann? oder einen anderen intelligenteren Weg, dies zu tun? Hinweis: Ich bin mir bewusst, dass ich derzeit eine leere Hashref zurückgeben, an dieser Stelle nur versuchen, herauszufinden, wie ich an die Werte erhalten könnte