#! /usr/bin/perl
use strict ;
use warnings ;
use Data::Dumper ;
my $str = qq~This contains both text
and html.~ ;
print $str, "\n\n" ;
# Do the replacement...
my @tags = () ;
my $index = -1 ;
$str =~ s|<([^>]+)>(?{ push @tags, $1 ; $index++ })|<$index>|gs ;
# Show the replaced text & the stored tags.
print "-----\n", Dumper( \@tags ), "\n\n", $str, "\n\n" ;
# Sub the tags back in.
$index = -1 ;
$str =~ s|<([^>]+)>(?{ $index++ })|<$tags[$index]>|gs ;
# Show the string with the HTML put back in.
print "-----\n", $str, "\n\n" ;
####
This contains both text
and html.
-----
$VAR1 = [
'b',
'/b',
'a href="http://www.w3c.org"',
'/a'
];
This <0>contains<1> both text
and <2>html<3>.
-----
This contains both text
and html.
##
##
# Sub the tags back in.
$str =~ s|<(\d+)>|<$tags[$1]>|gs ;