I have changed the script to:
sub show_template #parse it right now
{
my $template_file = shift;
my $vars_hashref = shift ;
my $tt;
print "in show_template 1<br>";
$tt = Template->new({
INCLUDE_PATH => ["$root/cgi-bin"],
INTERPOLATE => 1,
}) || do{ print "inside error" ; } ;
print "in show_template 2<br>";
$tt->process($template_file, $vars_hashref) ;
}
at the beginning of the file:
#!/usr/bin/perl
use strict;
use Template;
use CGI::Carp qw(fatalsToBrowser);
use diagnostics;
$|=1;
and the calling for the subroutine is:
eval{
&show_template("some_template.html",$vartoparse);
};
if ($@) {
if (UNIVERSAL::isa($@, "Template::Exception")) {
## error came from Template or below
if ([EMAIL PROTECTED]>type eq "undef") { # yes, the letters u n d e f!
print "error1"[EMAIL PROTECTED]>info; # the error from below Template
(perl
code plugins)
} else {
## the error came from a Template step, do what you want
print "error2" . "$@"; # stringifies the Template error
}
} else {
## the error came from above Template (something else in the eval)
print "error3". $@; # throw it again
}
}
But the output from the xx.cgi is just:
in show_template 1
without any other out put. even the eval doesn't capture the error.... There
is no error at the server's errorlog either.
> Anya wrote:
> > Thanks Lance for your reply.
> >
> > I have already put $|=1 at the beginning of the script. Actually the
output
> > is not blocked.
> >
> > And I have changed the script to:
> > sub template_parse
> > {
> > my $template_file = shift;
> > my $vars_hashref = shift;
> >
> > print 'before creating Template->new';
> >
> > my $tt = Template->new({INTERPOLATE => 1, INCLUDE_PATH =>
> > ["$root/cgi-bin"]}) ||
> > do{ open F, ">$root/cgi-bin/errorlog.txt"; print F "$Template::ERROR\n";
> > close F;};
>
> you aren't checking here to see if you sucessfully opened the file. Is
> $root undef at this point, possibly? Do you have warnings on?
>
> Also I would use "warn" for debugging output, then you don't have to
> worry about whether $| is set or not, and if you give warn() input that
> doesn't end in newline, it will give you a handy line and file name so
> you can find the debug statements later.
>
>
>
> >
> > print 'after creating Template->new';
> >
> > my $parsed;
> > $tt->process($template_file, $vars_hashref, \$parsed) or die
$$tt->error;
> >
> > return \$parsed;
> > }
> >
> >
> > after call the template_parse subroutine, there is no errorlog.txt exist
at
> > all and the output is still the same. It looks like the program exit
inside
> > the Template->new and it get lost.
> >
> > It could be the problem of server resource shortage?
> >
> >
> > ----- Original Message -----
> > From: "Lance Braswell" <[EMAIL PROTECTED]>
> > To: "Anya" <[EMAIL PROTECTED]>
> > Sent: Tuesday, July 05, 2005 2:32 PM
> > Subject: Re: [Templates] very strange Template->new behave
> >
> >
> >
> >>Try running with $|++ at the top of your script. Maybe
> >>it's making it past the new and your program is
> >>blocking on writing to the $template_file. Since
> >>stdout may be buffered you aren't seeing it.
> >>
> >>Alternately write the debug output to a file.
> >>
> >>--- Anya <[EMAIL PROTECTED]> wrote:
> >>
> >>
> >>>Hi,
> >>>
> >>>I have a strange problem on Template->new() method
> >>>on Template Toolkit in a cgi script.
> >>>
> >>>The program just stops at Template->new() instead of
> >>>creating a new object. Could anybody give me some
> >>>clues on how to resolve it?
> >>>
> >>>Thanks in advance.
> >>>
> >>>Anya
> >>>
> >>>
> >>>The program looks like:
> >>>
> >>>sub template_parse
> >>>{
> >>> my $template_file = shift;
> >>> my $vars_hashref = shift;
> >>>
> >>>print 'before creating Template->new';
> >>> my $tt = Template->new({INTERPOLATE => 1,
> >>>INCLUDE_PATH => ["$root/cgi-bin"]}) || die
> >>>"$Template::ERROR\n";
> >>>print 'after creating Template->new';
> >>>
> >>> my $parsed;
> >>> $tt->process($template_file, $vars_hashref,
> >>>\$parsed) or die $$tt->error;
> >>>
> >>> return \$parsed;
> >>>}
> >>>
> >>>The output is
> >>>before creating Template->new
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>it stops at my $tt.....; and no error message shows.
> >>>
> >>>This subroutine is inside a cgi script with a https
> >>>request to another server with XML format. Template
> >>>toolkit is used to display the response.
> >>>The same subroute works at other cgi scripts without
> >>>https request.
> >>>
> >>>
> >>
> >>
> >>
> >>
> >>____________________________________________________
> >>Yahoo! Sports
> >>Rekindle the Rivalries. Sign up for Fantasy Football
> >>http://football.fantasysports.yahoo.com
> >>
> >>
> >
> >
> >
> > _______________________________________________
> > templates mailing list
> > [email protected]
> > http://lists.template-toolkit.org/mailman/listinfo/templates
>
>
> --
> -----------------------------------------
> Name : Mike South
> Title : Software Developer
> Company : McClatchy Interactive
> Work Phone : (919) 861-1259
> Work Fax : (919) 861-1300
> Work Email : [EMAIL PROTECTED]
> AIM : msouthmi
> Web Site : http://www.mcclatchyinteractive.com/
> -----------------------------------------
>
>
_______________________________________________
templates mailing list
[email protected]
http://lists.template-toolkit.org/mailman/listinfo/templates