my $foo = 'c:\temp\source\test\test.c@@main\com\etc c:\temp\source\test\test1.c@@main\com\test c:\temp\source\test\test3\test2.c@@main\com\etc\test'; my @bits = split /\@\@.*?(?: c:\\temp|$)/, $foo; print "$_\n" for @bits;