in reply to regex replace using position loop

If you're working with XML, then you should consider using a cpan module like XML::Simple instead of hacking together a regex.

use Data::Dumper; use XML::Simple; use strict; my $xml = '<funcCall> <funcName>write</funcName> <rhsValue>crlf</rhsValue> <symConstant>loading</symConstant> <symConstant>| |</symConstant> <symConstant>lemmas</symConstant> <symConstant>| |</symConstant> <symConstant>for</symConstant> <symConstant>| |</symConstant> <variable>&lt;lx&gt;</variable> <symConstant>| |</symConstant> <symConstant>onto</symConstant> <symConstant>| |</symConstant> <variable>&lt;lms&gt;</variable> </funcCall>'; my $ref = XMLin($xml); print Dumper($ref);