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

direction
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";
  1. $direction ← asc, @values ← 3, @sorted ← 0

    4my $direction→ asc = "asc"; #@direction="desc"5my @values→ 3 = (3, 1, 2);6my @sorted→ 0;
  2. @sorted ← 3

    8if ($directionasc eq "asc") {9    @sorted→ 3 = sort { $a <=> $b } @values3;10} else {
  3. $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
  1. $direction ← desc, @values ← 3, @sorted ← 0

    4my $direction→ desc = "desc";5my @values→ 3 = (3, 1, 2);6my @sorted→ 0;
  2. @sorted ← 3

    9    @sorted = sort { $a <=> $b } @values;10} else {11    @sorted→ 3 = sort { $b <=> $a } @values3;12}
  3. $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