use strict; use warnings; use Benchmark qw( cmpthese ); use POSIX qw( strftime ); sub using_splice { my @t = split /\s/, $_[0]; splice @t, 3, 1; return join ' ', @t; } sub using_slice { return join " ", ( split " ", $_[0] )[0,1,2,4]; } my %tests = ( splice => 'my $now = using_splice(scalar(localtime));', slice => 'my $now = using_slice(scalar(localtime));', subst => '( my $now = localtime ) =~ s/(?:\d\d:){2}\d\d //;', strftime => 'my $now = strftime("%a %b %d %Y", localtime);', substr => 'substr(my $now = localtime, 11, 9, "");', ); $_ = "use strict; use warnings; $_" for values %tests; cmpthese(-3, \%tests);