diff options
Diffstat (limited to 'Xerl/Page/Templates.pm')
| -rw-r--r-- | Xerl/Page/Templates.pm | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/Xerl/Page/Templates.pm b/Xerl/Page/Templates.pm index d18ebcb..4a1c929 100644 --- a/Xerl/Page/Templates.pm +++ b/Xerl/Page/Templates.pm @@ -168,6 +168,14 @@ sub print($;$) { my $time = $_[1]; my $hflag = 1; + my $eval = sub { + my $perl = shift; + my $str = eval $perl; + $str =~ s/</</g; + $str =~ s/>/>/g; + return $str; + }; + for my $line ( @{ $self->get_array() } ) { if ( $hflag == 1 && $config->exists('noparse') ) { $line =~ s#^Content-Type.*#Content-Type: text/plain#i; @@ -175,14 +183,14 @@ sub print($;$) { } $line =~ s/ +/ /g; - redo if !$flag and $line =~ s/<perl>((?:.|\n)*?)<\/perl>/eval $1/ego; + redo if !$flag and $line =~ s/<perl>((?:.|\n)*?)<\/perl>/$eval->($1)/ego; if ( !$flag and $line =~ s/<perl>(.*)$//o ) { $code .= $1; $flag = 1; } - elsif ( $line =~ s/^(.*?)<\/perl>/eval $code.$1/eo ) { + elsif ( $line =~ s/^(.*?)<\/perl>/$eval->($code.$1)/eo ) { ( $code, $flag ) = ( '', 0 ); redo; |
