#!/usr/bin/perl -wT use strict; my @arr = (6..10,1..5); my $asc = sortmaker(1); my $desc = sortmaker(0); my @asc = sort $asc @arr; my @desc = sort $desc @arr; print "Original: @arr\n"; print "Ascending: @asc\n"; print "Descending: @desc\n"; sub sortmaker { my $order = shift; my $clause = $order ? '$a <=> $b' : '$b <=> $a'; eval "sub { $clause }"; } =OUTPUT Original: 6 7 8 9 10 1 2 3 4 5 Ascending: 1 2 3 4 5 6 7 8 9 10 Descending: 10 9 8 7 6 5 4 3 2 1