use strict; use warnings; use File::Basename; my $s = "/home/virtual/path/to/www/some/directory/filename.txt"; my ($base,$path,$ext) = fileparse($s,'\..*'); print "$base\n";