Я постепенно мускулирую некоторый код, который читает строки из разграниченного канала, разбивает каждый и присваивает их добавлению к хешу с использованием хэш-фрагмента.Как я могу назначить много атрибутов Moose одновременно?
Я превратил хэш в класс Moose, но теперь я понятия не имею, как быстро назначить поля из файла атрибутам класса (если вообще).
Я знаю, что могу довольно легко просто сделать:
my $line = get_line_from_file;
my @fields = split /\|/, $line;
my $record = My::Record->new;
$record->attr1($fields[0]);
...
, но я надеялся на быстрый один лайнер, чтобы присвоить все атрибуты в одном дыхании, несколько сродни:
my $line = get_line_from_file;
my %records;
@records{@field_names} = split /\|/, $line;
I Я читал о принуждении, но из того, что я могу сказать, это не то, что мне нужно.
Возможно ли это?
Благодаря
Если 2 атрибута - это массивы (с разделителем в пол-двоеточия в файле), то можно ли использовать принуждение? – Sparkles
Да, вы можете использовать принуждение в этом случае. Вы принуждаете 'Str' к' Array', используя функцию принуждения, такую как 'sub {return [split /; /, $ _ [0]}' – friedo