sub use_substr { my $string = shift; $string .= substr($string, -1) eq "/" ? "" : "/"; return $string; } sub use_if_substr { my $string = shift; $string .= '/' if substr($string, -1) ne "/"; return $string; } sub use_if_regex { my $string = shift; $string .="/" if(not $string =~/\/$/ ); return $string; } sub use_regex { my $string = shift; $string =~ s|/?$|/|; return $string; } use Benchmark 'cmpthese'; my @strings = ( qw( a / sdf/ /some/path /another/path/ sdfasdfasdfsdafsadfasdfsfdsadfsdfsdfsadfasdfsadfsadfsadfsadfsdfsadfasfsdafasdfsdf ), 'some string with spaces in it' ); cmpthese ( 100000, { 'if_substr' => sub { use_if_substr($_) for @strings }, 'substr' => sub { use_substr($_) for @strings }, 'if_regex' => sub { use_if_regex($_) for @strings }, 'regex' => sub { use_regex($_) for @strings } } );