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