summaryrefslogtreecommitdiff
path: root/Xerl/Page/Templates.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Xerl/Page/Templates.pm')
-rw-r--r--Xerl/Page/Templates.pm12
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/</&lt;/g;
+ $str =~ s/>/&gt;/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;