Thread MooseX::Types - Problem mit Subtype und Where-Test (8 answers)
Opened by roooot at 2010-09-22 22:18

MatthiasW
 2010-09-23 10:59
#141491 #141491
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
Quote
In meinem Fall ist das eine
ArrayRef
-> Ref auf WWW::Google::Contacts::Type::Email
-> HashRef
-> Strings
Nunja, ein WWW::Google::Contacts::Type::Email Objekt ist eine "gesegnete" Hash-Referenz. Außerdem sind nicht nur Strings hinter den Schlüsseln gespeichert.

Quote
Allerdings braucht man, wenn man coerce benutzen will auch immer den Zustand der Ursprungsdatenstruktur.
Die gesamte Struktur muss nicht anagegeben werden. In deinem Fall würde ich from => ArrayRef[WWW::Google::Contacts::Type::Email] verwenden. Ansonsten würde dort auch ArrayRef, oder Ref, oder Defined, oder ... ausreichen.

Darüber hinaus würde ich das via umschreiben:
Code (perl): (dl )
1
2
3
4
5
via => {
    my $p = (grep { $_->{primary} } @$_)[0];
    $p = {%$p}; # macht aus $p eine normale HashRef
    return $p;
}

Habe den Code allerdings nicht mit subtype GooglePrimaryEmail, as EmailAddress sondern mit subtype GooglePrimaryEmail, as HashRef getestet.

MfG
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'

View full thread MooseX::Types - Problem mit Subtype und Where-Test