[Petal] Petal and mod_perl, redux
   
    William McKee
     
    william@knowmad.com
       
    Mon, 5 Aug 2002 07:40:25 -0400
    
    
  
--Message-Boundary-9832
Content-type: text/plain; charset=US-ASCII
Content-transfer-encoding: 7BIT
Content-description: Mail message body
I've finally figured out some of my problems with using Petal under 
mod_perl. Part of the problem is that I've not used mod_perl before and 
part stems for Petal.
The part that was user error had to do with my httpd.conf file. I was 
incorrectly setting PerlSendHeader On in that file. My scripts are using 
CGI::Application and running under Apache:Registry. I think that sending 
the headers from CGI::Application was causing problems in Registry. Simply 
setting that to off fixed my display problems. 
The setting that was generating the extended error messages was PerlWarn 
On. Once I figured out where the actual error message was in the stack 
trace that PerlWarn was generating, I was able to track the problem down 
to the CodeGenerator. When this module creates the perl code based on the 
template directives, in some circumstances it can declare my @array 
multiple times. With use strict turned on, this will generate a warning. 
Attached is a diff which fixes this problem (you can remove the comments). 
The diff also includes the removal of a spurious semicolon at the end of 
one of the subroutine blocks. Yes, I saw that you had uploaded 0.5 and the 
diff is based off that release.
Cheers,
William
-- 
 Lead Developer
 Knowmad Services Inc. || Internet Applications & Database Integration
 http://www.knowmad.com
 
--Message-Boundary-9832
Content-type: text/plain; charset=US-ASCII
Content-transfer-encoding: 7BIT
Content-description: Text from file 'cg.diff'
47a48,49
>     # WLM's changes - predefine @array var
>     push @code, "    " x $indent . "my \@array;";
159c161
< };
---
> }
184c186,187
<     push @code, ("    " x $indent . "my \@array = \@{\$hash->{'$variable'}};");
---
>     #push @code, ("    " x $indent . "my \@array = \@{\$hash->{'$variable'}};");
>     push @code, ("    " x $indent . "\@array = \@{\$hash->{'$variable'}};");
--Message-Boundary-9832--