test431|alpha|123|bravo|542|charlie|412 #### perl -pe "do{s/(\.+?)\|(.+?)\|(.*?)(?=\<\/value\>)/$1\<\/value\>\$2\<\/name\>\$3/gi;} while /\|/;" #### test431alpha123bravo542charlie412 #### perl -pe "s/(\|\G)(.+?)\|(.+?)\|(.*?)(?=\<\/value\>)/$1$2\<\/value\>\$3\<\/name\>\$4/g" test431alpha123|bravo|542|charlie|412