my $reverse = its_reverse_sorting(time); # set or clear flag my $sorter = ( $reverse ? sub { $b cmp $a } : sub { $a cmp $b } ); for (sort $sorter @array) { ... }