It's a lot longer and wouldn't fit on a slide
I don't see why it has to be. You can level the playing field without any significant difference.
use Benchmark qw( timethese );
my @files = glob "/bin/*";
timethese( -2, {
Ordinary => sub {
() = sort { -M $a <=> -M $b } @files
},
Schwartzian => sub {
() =
map $_->[0],
sort { $a->[1] <=> $b->[1] }
map [ $_, -M ],
@files;
},
},
);
And that's it. Note that I always use sub refs with Benchmark, so the package issues don't even come up. You could assign to an actual array if you don't feel like explaining the () = .. construct, but it wouldn't make an appreciable difference in the code.
Makeshifts last the longest.