my @unsortedArray;
foreach my $received_xml_post (@ {$xml_post_array{'data'}})
{
push @unsortedArray, {
'ID' => $received_xml_post->{'ID'},
'Distance => $received_xml_post->{'Distance'},
'RouteDistance' => $received_xml_post->{'RouteDistance'}};
}
my @sortedArray = sort { $a->{RouteDistance} <=> $b->{RouteDistance || $a->{Distance} <=> $b->{Distance} } @unsortedArray;
####
my @unsortedArray;
foreach my $received_xml_post (@ {$xml_post_array{'data'}})
{
push @unsortedArray, {
'ID' => $received_xml_post->{'ID'},
'Distance => $received_xml_post->{'Distance'},
'RouteDistance' => $received_xml_post->{'RouteDistance'}};
}
my @sortedArray = sort { if( $a->{RouteDistance} == 0) {return -1} else {$a->{RouteDistance} <=> $b->{RouteDistance} $a->{Distance} <=> $b->{Distance} } @unsortedArray;
####
sort {
$a->{routedistance} && $b->{routedistance}
? $a->{routedistance} <=> $b->{routedistance}
: $a->{distance} <=> $b->{distance}
} @ar;
####
#!/usr/bin/perl
use warnings;
use strict;
my @unsorted_array = ( { ID => 3, Distance => 2.3, RouteDistance => 4.3 },
{ ID => 2, Distance => 1.5, RouteDistance => 2.8 },
{ ID => 5, Distance => 2.1, RouteDistance => 0 },
{ ID => 1, Distance => 1.7, RouteDistance => 2.5 });
my @sorted = sort {
if($a->{RouteDistance} == 0 || $b->{RouteDistance} == 0)
{
return ($a->{Distance} < $b->{Distance}) ? -1 : 1;
}
elsif ($a->{RouteDistance} == $b->{RouteDistance})
{
return 0;
}
else
{
return ($a->{RouteDistance} < $b->{RouteDistance}) ? -1 : 1;
}
} @unsorted_array;
foreach my $sorted_row (@sorted)
{
print "ID: ".$sorted_row->{'ID'}." Distance: ".$sorted_row->{'Distance'}." RouteDistance: ".$sorted_row->{'RouteDistance'}."\n";
}