Thanks again
davidrw, this is what I changed it to...
my $s = do {local $/=undef; <DATA>};
while( $s =~ s#<span style="([^"]+)">(?!.*?<span)(.*?)</span>#span2tag
+($1,$2)#sgei ){};
sub span2tag {
my ($attr, $s) = @_;
if ($attr =~ /bold/) { $s = "<b>$s</b>"; }
if ($attr =~ /italic/) { $s = "<i>$s</i>"; }
if ($attr =~ /underline/) { $s = "<u>$s</u>"; }
return $s;
}
__DATA__
this <span style="font-style: italic; font-weight: bold;">is</span> so
+me
this <span style="font-weight: bold;">is</span> some
<span style="font-weight: bold; text-decoration: underline;">test
<span style="font-style: italic;">text</span>
<span style="text-decoration: underline;">for</span> bolding</span>,
+ underlining and italicizing
That will take care of nested formats.