in reply to Replacing an XPath node with the value of its content

UPDATE:a warn to you all: do not use regexes against XML! they (and you too) loose.

In the spirit of more then one way I present an XML::Twig solution.
I'm sure there is a more elegant way to do it, anyway.
#!/usr/bin/perl use strict; use warnings; use XML::Twig; my $twig= XML::Twig->new( pretty_print => 'indented', twig_roots => { 'tm' => 1 }, twig_print_outside_roots => 1, twig_handlers => { tm=>sub{my $text = $_->te +xt(); $_->cut();print $text; }, }, ); $twig->parse('<?xml version="1.0"?><stats><tm tmclass="ibm" tmowner="I +BM Corporation" tmtype="reg" trademark="AIX">AIX</tm></stats>');
hth
L*

UPDATE2: i'm not sure to understand your case but maybe this handler is what you need to print only one time te text:
#declare a global: my $only_one=0; #same as before, then: twig_handlers => { tm=>sub{my $text = $_->text(); $only_one ? $_-> +cut() : ( $_->cut() and print $text and $only_one++ ) }, __DATA__ <?xml version="1.0"?> <stats> <tm tmclass="ibm" tmowner="IBM Corporation" tmtype=" +reg" trademark="AIX">AIX</tm> <tm tmclass="ibm" tmowner="IBM Corporation" tmtype=" +reg" trademark="AIX">AIX</tm> <tm tmclass="ibm" tmowner="IBM Corporation" tmtype=" +reg" trademark="AIX">AIX</tm> </stats>' __OUTPUT__ <?xml version="1.0"?> <stats> AIX </stats>
There are no rules, there are no thumbs..
Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.