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