$str = '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'; print map {"$_\n" if s/c:\\temp(.*?\.c)/$1/} split(/\s+|\@+/,$str);