Return-Path: Delivered-To: apmail-perl-modperl-archive@www.apache.org Received: (qmail 9160 invoked from network); 13 Mar 2008 15:59:12 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 13 Mar 2008 15:59:12 -0000 Received: (qmail 31937 invoked by uid 500); 13 Mar 2008 15:59:04 -0000 Delivered-To: apmail-perl-modperl-archive@perl.apache.org Received: (qmail 31920 invoked by uid 500); 13 Mar 2008 15:59:04 -0000 Mailing-List: contact modperl-help@perl.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list modperl@perl.apache.org Received: (qmail 31909 invoked by uid 99); 13 Mar 2008 15:59:04 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 13 Mar 2008 08:59:04 -0700 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: local policy) Received: from [212.85.38.174] (HELO popeye.combios.es) (212.85.38.174) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 13 Mar 2008 15:58:14 +0000 Received: from [192.168.245.129] (p549EB96A.dip0.t-ipconnect.de [84.158.185.106]) (authenticated bits=0) by popeye.combios.es (8.13.8/8.13.8/Debian-3) with ESMTP id m2DFwVpZ009743 for ; Thu, 13 Mar 2008 16:58:32 +0100 Message-ID: <47D94F21.20007@ice-sa.com> Date: Thu, 13 Mar 2008 16:58:25 +0100 From: =?UTF-8?B?QW5kcsOpIFdhcm5pZXI=?= User-Agent: Thunderbird 1.5 (Windows/20051201) MIME-Version: 1.0 To: modperl Subject: Re: Custom Object-Oriented Module using HTML::Template References: In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Checker-Version: SpamAssassin 3.1.7-deb (2006-10-05) on popeye.combios.es X-Virus-Scanned: ClamAV 0.90.1/6220/Wed Mar 12 23:33:03 2008 on popeye.combios.es X-Virus-Status: Clean X-Virus-Checked: Checked by ClamAV on apache.org X-Old-Spam-Status: No, score=-100.0 required=2.5 tests=USER_IN_WHITELIST autolearn=failed version=3.1.7-deb Hi. I know it's not clean, and it is probably not what you need to do in the long run, and I don't know a bit about HTML::Template. But why don't you try the following, just to check : >>>>> package Myserver::Handler; >>>>> >>>>> #Setup some essentials >>>>> use strict; #strict tolerance for code >>>>> use Carp; #debugging >>>>> use diagnostics; #more debugging >>>>> use warnings; #more debugging >>>>> #Handler-related stuff >>>>> use Apache2::RequestRec (); >>>>> use Apache2::RequestIO (); >>>>> use Apache2::Const -compile => qw(OK); >>>>> use HTML::Template; >>>>> >>>>> sub handler { >>>>> my $self = shift; >>>>> $self->content_type('text/html'); >>>>> >>>>> my $template = HTML::Template->new( >>>>> filename => '/home/Perl/tmpl/mainpage.tmpl', >>>>> cache => 1, >>>>> debug => 1, >>>>> stack_debug => 1 ); >>>>> print $template->output; >>>>> >>>>> # Obligatory stuff for the handler >>>>> return Apache2::Const::OK; >>>>> >>>>> } André xyon wrote: > Good suggestion, I moved the content_type to the top of the handler > routine in Handler.pm, so it now looks like: > > ------------------------------------------------------------------- > sub handler { > my $self = shift; > $self->content_type('text/html'); > > my $view = Myserver::View->new(); > $view->mainpage; > > # Obligatory stuff for the handler > return Apache2::Const::OK; > } > ------------------------------------------------------------------- > > > > I am still getting a blank page, though. Here is the latest lwp-request > output: > > > ------------------------------------------------------------------- > $ lwp-request -s -U -S -e -m GET "http://localhost/admin/" > GET http://localhost/admin/ > User-Agent: lwp-request/2.07 > > GET http://localhost/admin/ --> 200 OK > Connection: close > Date: Thu, 13 Mar 2008 15:45:08 GMT > Server: Apache > Content-Length: 0 > Content-Type: text/html; charset=UTF-8 > Client-Date: Thu, 13 Mar 2008 15:45:09 GMT > Client-Peer: 127.0.0.1:80 > Client-Response-Num: 1 > ------------------------------------------------------------------- > > > > On Thu, 2008-03-13 at 16:38 +0100, André Warnier wrote: >> Hi. >> >> First, don't take my suggestions as gospel, I don't know the TT2 and do >> not really know how you're supposed to work with it. >> But it seems to me that this is in the wrong order : >> >> $view->mainpage; >> $self->content_type('text/html'); >> >> I think you should trigger the HTTP header before you generate the >> content. Now, whether that is the reason of your current problem or >> not, I haven't a clue. >> >> But I'm trying, and I'm really interested, because I am starting to want >> to know more about TT2 (and Catalyst) these days. So your >> "from-the-very beginning" approach is also very helpful to me. >> (And I do have a certain experience of Apache2/mod_perl2) >> >> And, re-check your lwp-request switches, you might have disabled the >> display of the response content (remove the -d). >> >> André >> >> >> >> xyon wrote: >>> Thanks for the reply. >>> >>> I thought as you did (that there were too many "Content-Type" >>> definitions), so commented out this line in the View.pm module, but that >>> doesn't seem to have changed anything: >>> >>> 'print "Content-Type: text/html\n\n";' >>> >>> >>> >>> >>> Here is the lwp command and output: >>> ------------------------------------------------------------------- >>> $ lwp-request -e -S -s -U -m GET -Sed "http://localhost/admin/" >>> GET http://localhost/admin/ >>> User-Agent: lwp-request/2.07 >>> >>> GET http://localhost/admin/ --> 200 OK >>> Connection: close >>> Date: Thu, 13 Mar 2008 15:24:23 GMT >>> Server: Apache >>> Content-Length: 0 >>> Content-Type: text/html; charset=UTF-8 >>> Client-Date: Thu, 13 Mar 2008 15:24:23 GMT >>> Client-Peer: 127.0.0.1:80 >>> Client-Response-Num: 1 >>> ------------------------------------------------------------------- >>> >>> >>> On Thu, 2008-03-13 at 16:11 +0100, André Warnier wrote: >>>> Hi. >>>> >>>> First, a small disgression : along with perl, comes a beautiful test >>>> tool for HTTP stuff, called "lwp-request". >>>> Like, at the command-line : >>>> lwp-request (to see the options) >>>> lwp-request -m GET -Sed "http://myserver/myURL" >>>> (that will show you what you get as a response, without a browser >>>> getting in the way) >>>> >>>> Then, below, are you not now sending one "Content-type" too many ? >>>> It looks like you are doing it once in handler(), and once in mainpage(). >>>> >>>> André >>>> >>>> xyon wrote: >>>>> That worked great with the test script ( print $template->output; ), but >>>>> unfortunately, I'm having trouble getting the display onto a web page >>>>> (via the Handler). The resulting web page is blank, with no source. >>>>> >>>>> >>>>> Below are my Apache configs for the handler, logs, and the handler and >>>>> view module's latest code. I've also included the test script code, just >>>>> in case there is some obvious reason it would work and the handler >>>>> won't. >>>>> >>>>> >>>>> >>>>> >>>>> Apache config: >>>>> ---------------------------------------------------- >>>>> PerlRequire /etc/httpd/perl/startup.pl >>>>> >>>>> SetHandler modperl >>>>> PerlResponseHandler Myserver::Handler >>>>> >>>>> ---------------------------------------------------- >>>>> >>>>> >>>>> >>>>> >>>>> /etc/httpd/perl/startup.pl: >>>>> ---------------------------------------------------- >>>>> use lib qw(/home/Perl/); >>>>> 1; >>>>> ---------------------------------------------------- >>>>> >>>>> >>>>> >>>>> >>>>> Apache log: >>>>> ---------------------------------------------------- >>>>> ==> /var/log/httpd/error_log <== >>>>> ### HTML::Template Debug ### In _parse: >>>>> ### HTML::Template _param Stack Dump ### >>>>> >>>>> $VAR1 = [ >>>>> \'Test! >>>>> ' >>>>> ]; >>>>> >>>>> ### HTML::Template Debug ### In output >>>>> ### HTML::Template output Stack Dump ### >>>>> >>>>> $VAR1 = [ >>>>> \'Test! >>>>> ' >>>>> ]; >>>>> >>>>> >>>>> ==> /var/log/httpd/ssl_request_log <== >>>>> [13/Mar/2008:10:48:38 -0400] 10.5.5.5 TLSv1 DHE-RSA-AES256-SHA >>>>> "GET /admin/ HTTP/1.1" - >>>>> >>>>> ==> /var/log/httpd/ssl_access_log <== >>>>> 10.5.5.5 - - [13/Mar/2008:10:48:38 -0400] "GET /admin/ HTTP/1.1" 200 - >>>>> ---------------------------------------------------- >>>>> >>>>> >>>>> >>>>> >>>>> /home/Perl/Myserver/Handler.pm >>>>> ---------------------------------------------------- >>>>> package Myserver::Handler; >>>>> >>>>> #Setup some essentials >>>>> use strict; #strict tolerance for code >>>>> use Carp; #debugging >>>>> use diagnostics; #more debugging >>>>> use warnings; #more debugging >>>>> >>>>> #Handler-related stuff >>>>> use Apache2::RequestRec (); >>>>> use Apache2::RequestIO (); >>>>> use Apache2::Const -compile => qw(OK); >>>>> >>>>> sub handler { >>>>> my $self = shift; >>>>> >>>>> my $view = Myserver::View->new(); >>>>> $view->mainpage; >>>>> >>>>> # Obligatory stuff for the handler >>>>> $self->content_type('text/html'); >>>>> return Apache2::Const::OK; >>>>> >>>>> } >>>>> >>>>> 1; >>>>> >>>>> ---------------------------------------------------- >>>>> >>>>> >>>>> >>>>> >>>>> /home/Perl/Myserver/View.pm: >>>>> ---------------------------------------------------- >>>>> package Myserver::View; >>>>> >>>>> #Setup some essentials >>>>> use strict; #strict tolerance for code >>>>> use Carp; #debugging >>>>> use diagnostics; #more debugging >>>>> use warnings; #more debugging >>>>> >>>>> #Loadup some needed functions >>>>> use HTML::Template; >>>>> >>>>> sub new { >>>>> my $self = shift; >>>>> return $self; >>>>> } >>>>> >>>>> sub mainpage { >>>>> my $self = shift; >>>>> my $template = HTML::Template->new( >>>>> filename => '/home/Perl/tmpl/mainpage.tmpl', >>>>> cache => 1, >>>>> debug => 1, >>>>> stack_debug => 1 ); >>>>> print "Content-Type: text/html\n\n"; >>>>> print $template->output; >>>>> return $self; >>>>> } >>>>> >>>>> 1; >>>>> ---------------------------------------------------- >>>>> >>>>> >>>>> >>>>> >>>>> /home/Perl/tmpl/mainpage.tmpl: >>>>> ---------------------------------------------------- >>>>> Test! >>>>> ---------------------------------------------------- >>>>> >>>>> >>>>> >>>>> >>>>> /home/Perl/tests/View_mainpage.pl >>>>> ---------------------------------------------------- >>>>> #!/usr/bin/perl -w >>>>> >>>>> # Test printing of the main page >>>>> print "Main Page.."; >>>>> >>>>> #Let's load the view module >>>>> use lib "../"; >>>>> use Myserver::View; >>>>> #Now let's load some things that are very handy >>>>> use strict; #strict tolerance for code >>>>> use Carp; #debugging >>>>> use warnings; #more debugging >>>>> use diagnostics; #even more debugging >>>>> >>>>> # Let's create an object >>>>> my $view = Myserver::View->new; >>>>> >>>>> # Now, let's tell View to display the main page >>>>> $view->mainpage; >>>>> >>>>> print ".OK"; >>>>> >>>>> 1; >>>>> ---------------------------------------------------- >>>>> >>>>> >>>>> >>>>> >>>>> On Thu, 2008-03-13 at 13:29 +0800, Foo JH wrote: >>>>>> try print $template->output; >>>>>> >>>>>> You forgot the print(); >>>>>> >>>>>> xyon wrote: >>>>>>> Hey everyone, >>>>>>> >>>>>>> Firstly, I apologize I sent the previous email under an incorrect subject line. >>>>>>> >>>>>>> I am working on my first Object-Oriented project, and have hit a slight >>>>>>> snag. I am using HTML::Template to output within the View module, but it >>>>>>> never outputs. I don't see any errors in the logs, I just get a blank >>>>>>> page. Below is pertinent information including a test script with its >>>>>>> output: >>>>>>> >>>>>>> >>>>>>> >>>>>>> OS Info: >>>>>>> ---------------------------------------------------- >>>>>>> CentOS release 4.6 (Final) >>>>>>> ---------------------------------------------------- >>>>>>> >>>>>>> >>>>>>> >>>>>>> Package info: >>>>>>> ---------------------------------------------------- >>>>>>> perl-5.8.8-11 >>>>>>> perl-HTML-Template-2.9-1 >>>>>>> httpd-2.0.59-1.el4s1.10.el4.centos >>>>>>> mod_perl-2.0.3-1.el4s1.3 >>>>>>> ---------------------------------------------------- >>>>>>> >>>>>>> >>>>>>> >>>>>>> /home/perl/Myserver/View.pm >>>>>>> ---------------------------------------------------- >>>>>>> package Myserver::View; >>>>>>> >>>>>>> #Setup some essentials >>>>>>> use strict; #strict tolerance for code >>>>>>> use Carp; #debugging >>>>>>> use diagnostics; #more debugging >>>>>>> use warnings; #more debugging >>>>>>> >>>>>>> #Loadup some needed functions >>>>>>> use HTML::Template; >>>>>>> >>>>>>> sub new { >>>>>>> my $self = shift; >>>>>>> return $self; >>>>>>> } >>>>>>> >>>>>>> sub mainpage { >>>>>>> my $self = shift; >>>>>>> my $template = HTML::Template->new( filename => >>>>>>> '/home/Perl/tmpl/mainpage.tmpl', >>>>>>> cache => 1, >>>>>>> debug => 1, >>>>>>> stack_debug => 1 ); >>>>>>> print "Content-Type: text/html\n\n"; >>>>>>> $template->output; >>>>>>> return $self; >>>>>>> } >>>>>>> >>>>>>> 1; >>>>>>> ---------------------------------------------------- >>>>>>> >>>>>>> >>>>>>> >>>>>>> /home/Perl/tests/View_mainpage.pl >>>>>>> ---------------------------------------------------- >>>>>>> #!/usr/bin/perl -w >>>>>>> >>>>>>> # Test printing of the main page >>>>>>> print "Main Page.."; >>>>>>> >>>>>>> #Let's load the view module >>>>>>> use lib "../"; >>>>>>> use Myserver::View; >>>>>>> #Now let's load some things that are very handy >>>>>>> use strict; #strict tolerance for code >>>>>>> use Carp; #debugging >>>>>>> use warnings; #more debugging >>>>>>> use diagnostics; #even more debugging >>>>>>> >>>>>>> # Let's create an object >>>>>>> my $view = Myserver::View->new; >>>>>>> >>>>>>> # Now, let's tell View to display the main page >>>>>>> $view->mainpage; >>>>>>> >>>>>>> print ".OK"; >>>>>>> >>>>>>> 1; >>>>>>> ---------------------------------------------------- >>>>>>> >>>>>>> >>>>>>> >>>>>>> /home/Perl/tmpl/mainpage.tmpl: >>>>>>> ---------------------------------------------------- >>>>>>> Test! >>>>>>> ---------------------------------------------------- >>>>>>> >>>>>>> >>>>>>> >>>>>>> Output with debugging on (as above): >>>>>>> ---------------------------------------------------- >>>>>>> $ tests/View_mainpage.pl >>>>>>> ### HTML::Template Debug ### In _parse: >>>>>>> ### HTML::Template _param Stack Dump ### >>>>>>> >>>>>>> $VAR1 = [ >>>>>>> \'Test! >>>>>>> ' >>>>>>> ]; >>>>>>> >>>>>>> Main Page..Content-Type: text/html >>>>>>> >>>>>>> ### HTML::Template Debug ### In output >>>>>>> ### HTML::Template output Stack Dump ### >>>>>>> >>>>>>> $VAR1 = [ >>>>>>> \'Test! >>>>>>> ' >>>>>>> ]; >>>>>>> >>>>>>> .OK >>>>>>> ---------------------------------------------------- >>>>>>> >>>>>>> >>>>>>> >>>>>>> Output without debugging: >>>>>>> ---------------------------------------------------- >>>>>>> $ tests/View_mainpage.pl >>>>>>> Main Page..Content-Type: text/html >>>>>>> >>>>>>> .OK >>>>>>> ---------------------------------------------------- >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>> > >