use Benchmark qw(:all); $count = -5; cmpthese( $count, { 'org' => sub { for my $etime (qw(3-12:12:12 11:22)) { my $age; my $time = $etime; $age = ($1 * 86400) if $time =~ s/(\d+)-//; #my ( $hours, $min, $sec ) = split /:/, $time; my @mult = ( 1, 60, 3600 ); for ( reverse split /:/, $time ) { $age += $_ * shift @mult; } } }, 'mod' => sub { for my $etime (qw(3-12:12:12 11:22)) { my $age; # age in seconds my $time = $etime; my @mult = ( 1, 60, 3600, 86400); for ( reverse split /[:\-]/, $time ) { $age += $_ * shift @mult; } } }, } );