c:\@Work\Perl\monks>perl -wMstrict -le "use List::Util qw(max); ;; my $rx_wordic = qr{ (?<= \\) ABC [^\\]* }xms; ;; my $maxlen = max map length, my @paths = qw( C:\somedirectory\anotherDirectory\ABCxyz\myFile.txt C:\somedirectory\anotherDirectory\ABCxyz\Logs\myLogs.txt C:\somedirectory\anotherDirectory\ABCxyz\Stuff\myStuff.txt C:\foo\bar\ABCxyz\baz\boff\ABCxyz\myStuff.txt C:\foo\bar\ABCxyz\baz\boff\ABCxyz\xyzzy.zy\a.b\myStuff.txt C:\myStuff.txt C:\totally\bogus\myStuff.txt ); ;; for my $path (@paths) { printf qq{%-*s -> }, $maxlen+2, qq{'$path'}; $path =~ s{ \A .* (?= $rx_wordic) }''xmsg; printf qq{%-s \n}, qq{'$path'}; } " 'C:\somedirectory\anotherDirectory\ABCxyz\myFile.txt' -> 'ABCxyz\myFile.txt' 'C:\somedirectory\anotherDirectory\ABCxyz\Logs\myLogs.txt' -> 'ABCxyz\Logs\myLogs.txt' 'C:\somedirectory\anotherDirectory\ABCxyz\Stuff\myStuff.txt' -> 'ABCxyz\Stuff\myStuff.txt' 'C:\foo\bar\ABCxyz\baz\boff\ABCxyz\myStuff.txt' -> 'ABCxyz\myStuff.txt' 'C:\foo\bar\ABCxyz\baz\boff\ABCxyz\xyzzy.zy\a.b\myStuff.txt' -> 'ABCxyz\xyzzy.zy\a.b\myStuff.txt' 'C:\myStuff.txt' -> 'C:\myStuff.txt' 'C:\totally\bogus\myStuff.txt' -> 'C:\totally\bogus\myStuff.txt'