#!/usr/bin/perl
use HTML::PullParser;
use HTML::Entities;
my $doc = <<'EOF'; my %options = ();
abc abc
<% abc ( ' abc abc %\>', $abc ); %>
EOF
$doc =~ s/<%(.*?)%>/
my $content = $1;
HTML::Entities::encode_entities ( $content );
qq'[[asp_pp"$content"asp_pp]]'
/gsex;
foreach ( qw{ text default } )
{ $options{$_} = "event, text, is_cdata"; }
my $p = HTML::PullParser->new ( doc => $doc, %options );
my $output = "";
while ( my $token = $p->get_token() )
{
my $text = $token->[1];
$text =~ s/(\[\[asp_pp"[^"]+"asp_pp\]\])|(abc)/$1?$1:"$2<\/b>"/gse
if $token->[0] eq 'text' and ! $token->[2];
$output .= $text;
}
$output =~ s/\[\[asp_pp"([^"]+)"asp_pp\]\]/
"<%" . HTML::Entities::decode_entities ( $1 ) . "%>"/gse;
print $output;
####
abc abc
<% abc ( ' abc abc %>', $abc ); %>