The sort function has extra magic to recognise bare sub names without them being parsed as a call, so you can write sort by_date @list_of_hashes where by_date is the name of a sub. I can’t think of any time I’ve used that feature – however:
use strict;
use File::Spec::Functions;
use Test::More tests => 5;
my @file = do {
opendir my $dh, curdir or die "$!";
readdir $dh;
};
sub check(&) { not grep $_ eq updir, shift->( @file ) }
;ok check { sort no_upwards @_ }
;ok check { sort no_upwards( @_ ) }
;ok check { sort ( no_upwards @_ ) }
;ok check { sort ( no_upwards( @_ ) ) }
;ok check { sort +( no_upwards @_ ) }
=begin output
1..5
not ok 1
# Failed test at t.pl line 13.
not ok 2
# Failed test at t.pl line 14.
not ok 3
# Failed test at t.pl line 15.
ok 4
ok 5
# Looks like you failed 3 tests of 5.
I just lost half an hour tracking this down.
Makeshifts last the longest.