my $dir = shift; my $sort_sub = $dir eq 'up' ? sub {$a <=> $b} : sub {$b <=> $a}; my @items = (3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5); print "@{[sort { $sort_sub->() } @items]}\n"; #### $ perl sample up 1 1 2 3 3 4 5 5 5 6 9 $ perl sample down 9 6 5 5 5 4 3 3 2 1 1