Ich bin nach und nach Moose-ifying etwas Code, der Zeilen von einem Rohr getrennt liest, spaltet jede und weist sie zu einem Hash mit einem Hash-Slice hinzu.Wie kann ich viele Moose-Attribute gleichzeitig zuweisen?
Ich habe den Hash in eine Moose-Klasse umgewandelt, aber jetzt habe ich keine Ahnung, wie ich die Felder aus der Datei schnell den Attributen der Klasse zuordnen kann (wenn überhaupt).
Ich weiß, ich kann ganz einfach nur tun:
my $line = get_line_from_file;
my @fields = split /\|/, $line;
my $record = My::Record->new;
$record->attr1($fields[0]);
...
aber ich habe gehofft, für einen schnellen einzeiler der Attribute alle in einem Rutsch zu vergeben, etwas ähnlich:
my $line = get_line_from_file;
my %records;
@records{@field_names} = split /\|/, $line;
I habe über Zwang gelesen, aber von dem, was ich sagen kann, ist es nicht das, wonach ich suche.
Ist es möglich?
Dank
Wenn 2 der Attribute Arrays sind (Semikolon, das in der Datei begrenzt ist), wenn Coerce verwendet werden kann? – Sparkles
Ja, Sie können Zwang in diesem Fall verwenden. Sie würden ein 'Str' zu einem' Array' zwingen, indem Sie eine Zwangsfunktion wie 'sub {return [split /; /, $ _ [0]}' ' – friedo