my @ordered = sort @array; @ordered = reverse @array if $something; #### foreach ($something ? reverse sort @array : sort @array) #### use Sort::Key qw(keysort rkeysort); my $sorter = $something ? \&rkeysort : \&keysort; foreach ($sorter->(sub { $_ }, @array) )