in reply to Variable Length Parsing

Well at the end you have (.+) and by default perl will match as much as it possibly can(ie. the rest of the string). I believe what you want to do is match up until {TCP} so try putting {TCP} after the  (.+).