#! /usr/local/bin/perl -w use strict; sub forward ($$) {$a cmp $b} sub backward ($$) {$b cmp $a} my $sorter = [\&forward, \&backward]; my @list = qw(kholsky stencil dnubietna barkhausen manganese fairing fleische flake schlozhauer gascoigne); my $offset = shift || 0; print "$_\n" for sort {$sorter->[$offset]->()} @list; #### #! /usr/local/bin/perl -w use strict; sub forward ($$) {my ($x, $y) = @_; $x cmp $y} sub backward ($$) {my ($x, $y) = @_; $y cmp $x} sub bylen ($$) {my ($x, $y) = @_; length($x) <=> length($y) || $x cmp $y } my @sorter = qw(forward backward bylen); my @list = qw(kholsky stencil dnubietna barkhausen manganese fairing fleische flake schlozhauer gascoigne); my $s = $sorter[shift || 0]; print "$_\n" for sort $s @list;