# First stage: sub process_perl { my( $code ) = @_; my $res = eval $code; my $err = $@; warn "Whoops. Caught error [$err] for code [$code]" if $err; return $res; }; $template =~ s!<%([^%]+)%>!process_perl("$1")!gse;