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