#!/usr/bin/perl use strict; use warnings; use Benchmark qw( cmpthese ); my $tempvalue = 'c:/reports/check/test.txt'; cmpthese( -5, { file_basename => sub { file_basename($tempvalue); }, fast_and_simple => sub { fast_and_simple($tempvalue); }, }); sub file_basename { my $tempvalue = shift; require File::Basename; # Hits performance only once my ($name, $path) = File::Basename::fileparse($tempvalue); return $path . "design." . $name; } sub fast_and_simple { my $tempvalue = shift; my @split = split( '/', $tempvalue ); my $file = pop @split; return join '/', @split, "design.$file"; } __END__ Rate file_basename fast_and_simple file_basename 74479/s -- -58% fast_and_simple 175981/s 136% --