sort

Contents | Up | Prev | Next

# 9.3. sort

The `sort` function can sort an array based on a comparison expression. As with the `map` function, this expression can be as complex as you'd like and may actually include a call to a dedicated function.

Within the comparison block, the variables `$a` and `$b` indicate the two elements to be compared. If the expression returns a negative value it means that `$a` should precede `$b`. If it's positive, it means that `$b` should come before `$a`. If it's zero it indicates that it does not matter which one will come first.

The following example sorts an array of integers numerically:

    my @array = (100,5,8,92,-7,34,29,58,8,10,24);

    my @sorted_array =
        (sort
            {
                if ($a < $b)
                {
                    return -1;
                }
                elsif ($b > $a)
                {
                    return 1;
                }
                else
                {
                    return 0;
                }
            }
            @array
        );

    print join(",", @sorted_array), "\n";

Contents | Up | Prev | Next