use strict; use warnings; my $string = "/base-dir/dir/foo.txt INVALID ORDER-NO 4546090"; my $string2 = "INVALID ORDER-NO 4546090"; print $string,"\n"; $string = join('',reverse(split('', $string))); $string =~ s/\s*?(\/|-|\w|\.|\d)+$//; $string = join('',reverse(split('', $string))); print $string,"\n\n"; print $string2,"\n"; $string2 = join('',reverse(split('', $string2))); $string2 =~ s/\s*?\/(-|\w|\.|\d)+$//; $string2 = join('',reverse(split('', $string2))); print $string2; #### H:\HTML_T~1\perl>perl regex.pl /base-dir/dir/foo.txt INVALID ORDER-NO 4546090 INVALID ORDER-NO 4546090 INVALID ORDER-NO 4546090 INVALID ORDER-NO 4546090