當從一對夫婦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