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

Reply via email to