Spa*_*les 6 perl attributes moose
我逐渐使Moose-ifying一些代码从管道分界线读取,分割每个并分配使用哈希切片将它们添加到哈希.
我已经将哈希变成了Moose类,但现在我不知道如何快速将文件中的字段分配给类的属性(如果有的话).
我知道我可以很容易地做到:
my $line = get_line_from_file;
my @fields = split /\|/, $line;
my $record = My::Record->new;
$record->attr1($fields[0]);
...
Run Code Online (Sandbox Code Playgroud)
但我希望快速一个班轮一次性分配所有属性,有点类似于:
my $line = get_line_from_file;
my %records;
@records{@field_names} = split /\|/, $line;
Run Code Online (Sandbox Code Playgroud)
我读过有关强制的内容,但据我所知,这不是我所追求的.
可能吗?
谢谢
Gre*_*con 11
Pass the attributes to the constructor using zip from the List::MoreUtils module:
use List::MoreUtils qw/ zip /;
my $object = My::Record->new(
zip @field_names,
@{[ split /\|/, get_line_from_file ]}
);
Run Code Online (Sandbox Code Playgroud)
我认为你采用哈希切片方法是正确的.我会这样做:
my %fields;
@fields{@field_names} = split m{\|}, $line;
my $record = My::Record->new( %fields );
Run Code Online (Sandbox Code Playgroud)
你或许可以想出一个粗糙的map解决方案来实现同样的目标,但我在这里的可读性方面是错误的.
| 归档时间: |
|
| 查看次数: |
387 次 |
| 最近记录: |