while () { @fields = split; my $record = { ra => ..., prob => ..., dist => ..., }; push @records, $record; } sub by_distance { $a->{dist} <=> $b->{dist} } @records = sort by_distance @records;