my $url = qq|/directory/directory/some-file.html|; print substr($url, 0, rindex($url,'/')),"\n"; #### (split('/',$url))[-1] #### use strict; use Benchmark; use File::Basename; my $url = qq|/directory/directory/some-file.html|; timethese(500000, { 'substr' => sub { return substr($url, 0, rindex($url,'/')) }, 'split' => sub { return (split('/',$url))[-1] }, 'module' => sub { return basename($url) }, }); =for benchmark_results Benchmark: timing 500000 iterations of module, split, substr... module: 33 wallclock secs (33.03 usr + 0.10 sys = 33.13 CPU) split: 5 wallclock secs ( 5.44 usr + -0.01 sys = 5.43 CPU) substr: 1 wallclock secs ( 1.74 usr + 0.00 sys = 1.74 CPU) (linux kernal 2.2.14-5.0, dual 450MHz) =cut