in reply to A poor bloke and his regex...

I worked on the assumption that your path started with a /. The problem sounded like a reverse regex problem to me so thats how I solved it. The other methods are probably better but what the hey :).
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;

This produced:
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
HTH,

Simon