Re: Error using HTML::Template
by seattlejohn (Deacon) on Dec 11, 2003 at 06:59 UTC
|
Line 56 in base.pm reads:
next if $pkg->isa($base);
Based on the error message, it looks like the $pkg is Cwd. I'm guessing that perl can't find the object method because the class isn't loaded properly. Does the target Web server have Cwd.pm in an included directory?
| [reply] [d/l] [select] |
|
| [reply] |
Re: Error using HTML::Template
by BUU (Prior) on Dec 11, 2003 at 06:31 UTC
|
output print "Content-Type: text/html\n\n", $template->output;
Typo? New feature? | [reply] [d/l] |
|
i.e. Your comment should be on just the one line, anneq. This might have been a copy-and-paste error (from you local server to the remote, or from your local server to the Monastery, not sure which), which is why you should use <code> tags to include code in your posts.
This also should have produced an error. Did you check for errors? Hint: run it from the console before you test it on the web.
(I also recommend you use strict in all your scripts to make sure you're generally declaring your variables, etc. correctly. It's a bit of bondage that encourages good coding practices.)
# send the obligatory Content-Type and print the template output
print "Content-Type: text/html\n\n", $template->output;
--
Allolex
| [reply] [d/l] [select] |
|
Allolex,
Thanks for your reply. My comment is on one line. I'll use code tags next time, though. Thanks for that tip. I didn't know about code.
I ran it from the console and from my local web server and it ran just fine.
I put use strict and -wT in all my scripts but I tried without them and it still didn't work.
Thank you for your help,
Anne
| [reply] |
|
| [reply] |
Re: Error using HTML::Template
by !1 (Hermit) on Dec 11, 2003 at 14:06 UTC
|
The error message is quite puzzling. isa should be inherited from UNIVERSAL. I can't tell you how long UNIVERSAL has been around, but it's been there at least since 5.006. Could you possibly tell us which version of the interpreter your hosting provider uses?
| [reply] |
|
| [reply] |
|
My remote server is Tripod
There's your problem. Tripod severely crippled Perl when they upgraded to 5.8. Not even the standard modules are available. I wouldn't recommend Tripod to anyone.
Try this minimal script:
print "Content-Type: text/plain\n\n";
print "\@INC is:";
print join ":", @INC;
It's empty! Bad Tripod!
Here's another one to try, even more minimal: use strict;
And the resulting error message1:
Your script produced this error:
Can't locate strict.pm in @INC (@INC contains: . /lib /site_perl) at n
+ostrict.pl line 1.
BEGIN failed--compilation aborted at nostrict.pl line 1.
I tried to manually satisfy the requirements for a simple site for a friend, and ended up giving up on Tripod all together (I still remember the login info ;). 1Note - in the second error message, @INC is populated. Not sure why... | [reply] [d/l] [select] |
|
|
|
Re: Error using HTML::Template
by swngnmonk (Pilgrim) on Dec 11, 2003 at 15:21 UTC
|
I see two errors - one is an error in your code (copy/paste from improperly formatted POD on your end), the other is an actual typo in the POD.
Looking at the POD on CPAN, the line reads:
# send the obligatory Content-Type and print the template output
print "Content-Type: text/html\n\n", $template->output;
So it's "print", not "output print". But there is a typo in the POD - that comma before $template->output; should be a period (string concatenation).
print "Content-Type: text/html\n\n". $template->output;
Or, if you're familiar with C, you could also write it in a more recognizable form:
print sprintf("Content-Type:text/html\n\n%s",$template->output);
No difference, really, but sometimes people find it easier to read the latter.
Update: Ok, so I'm wrong about the second bug - I'll plead ignorance to printing in LIST form. That being said, based on the original post, I think a code copy &paste went badly, and that's why you're getting the strange error messages.
PS - and yes, you could just use printf, but you'll get far more use out of sprintf in the long run. :)
| [reply] [d/l] [select] |
|
But there is a typo in the POD - that comma before $template->output; should be a period (string concatenation).
Why?
#!/usr/bin/perl -l
print 1,2,3;
$,=$";
print "this","works";
__END__
123
this works
This is the print LIST form that is mentioned in perldoc -f print. | [reply] [d/l] |
|
I wouldn't bother with print sprintf(...).. just use printf.
| [reply] [d/l] [select] |
|
swngnmonk,
The comment and line of code are correct in my script. It could be that it showed up incorrectly on the node because I didn't use code tages. Thanks to Allolex pointing that out. It looks fine on my screen because I am using small fonts in my CSS.
I thought that the comma could be problem too, so I tried using the concatenation operator and also tried using two print statements but to no avail.
I'm a newbie to programming and web pages so I think using C is out for me right now. Too steep a learning curve.
Thank you for taking your valuable time to respond.
Much appreciated,
Anne
| [reply] |
Re: Error using HTML::Template
by samtregar (Abbot) on Dec 11, 2003 at 18:33 UTC
|
I suspect your problem has something to do with taint mode. You added a "T" to the first line of the script you copied from the POD. Try removing it and post your results.
-sam
| [reply] |
|
| [reply] |