当从一对夫妇arrayrefs的结合具体的数据,我映射改造按照下面的代码:有没有一种方法可以从切片列表中构建一个匿名哈希引用?
my @output_data = map {
my $ss = $everything->{$_->{username}};
my $distance = $gis->distance ($_->{lat}, $_->{long} => $ss->{Latitude}, $ss->{Longitude});
my %data;
@data{qw/username addr1 addr2 city state zip rec_lat rec_long/} = @{$_}{qw/username addr1 addr2 city state zip lat long/};
@data{qw/ss_lat ss_long/} = @{$ss}{qw/Latitude Longitude/};
$data{difference} = sprintf("%.3f", $distance->miles);
\%data;
} @$source;
其中一期工程。它通过添加来自初始数据集(它们各自不包含整个行,正是我所关心的)的片段以及两者之间的计算结果来构建哈希。有没有一种方式可以将结束行干净地组合成单个匿名hashref构造函数?或者像这样构建结果数据集是最好的方法?
为了可读性,你不应该把这些东西放在map中,而应该放在foreach中。 – simbabque
这是我去的第一种方式 - 但遇到了编写push()的问题,因为我无法弄清楚如何构建在推式上使用的匿名hashref(@output_data,...)编辑:或者说,我可以在块中创建%数据,只需按(@output_data,\%data),是的。 – Oesor