Functional List Processing
Custom Sort
Sort small lists with a chosen direction.
custom-sort
Sort can compare values in the order a program needs. Numeric comparisons use the numeric comparison operator instead of string comparison.
Custom Sort
sort_custom.pl
Replay: real traced execution (multi-file project)
use strict;
use warnings;
my $direction = "asc";
my @values = (3, 1, 2);
my @sorted;
if ($direction eq "asc") {
@sorted = sort { $a <=> $b } @values;
} else {
@sorted = sort { $b <=> $a } @values;
}
my $joined = join(",", @sorted);
print "direction=$direction\n";
print "sorted=$joined\n";
use strict;
use warnings;
my $direction = "desc";
my @values = (3, 1, 2);
my @sorted;
if ($direction eq "asc") {
@sorted = sort { $a <=> $b } @values;
} else {
@sorted = sort { $b <=> $a } @values;
}
my $joined = join(",", @sorted);
print "direction=$direction\n";
print "sorted=$joined\n";
$direction ← asc, @values ← 3, @sorted ← 0
4my $direction→ asc = "asc"; #@direction="desc"5my @values→ 3 = (3, 1, 2);6my @sorted→ 0;@sorted ← 3
8if ($directionasc eq "asc") {9 @sorted→ 3 = sort { $a <=> $b } @values3;10} else {$joined ← 1,2,3
14my $joined→ 1,2,3 = join(",", @sorted3);1516print "direction=$directionasc\n";17print "sorted=$joined1,2,3\n";outputdirection=asc sorted=1,2,3
$direction ← desc, @values ← 3, @sorted ← 0
4my $direction→ desc = "desc";5my @values→ 3 = (3, 1, 2);6my @sorted→ 0;@sorted ← 3
9 @sorted = sort { $a <=> $b } @values;10} else {11 @sorted→ 3 = sort { $b <=> $a } @values3;12}$joined ← 3,2,1
14my $joined→ 3,2,1 = join(",", @sorted3);1516print "direction=$directiondesc\n";17print "sorted=$joined3,2,1\n";outputdirection=desc sorted=3,2,1