SPUG: Re: generating output with a cgi script
Adam Monsen
meonkeys at hotmail.com
Mon Oct 2 15:44:46 CDT 2000
To get your version to work:
A. Use the full pathname for the file. ie:
open(DB_FILE, "/home/httpd/html/test.bib");
B. Looks like you have a couple of typos (no > after $cgi-, misspelled
"$value") and an unnecessary foreach loop. Instead of:
foreach $value ($cgi-param($name)) {
print " $values\n";
}
try this...
print $cgi->param($name)."\n";
Here's some hints:
1. You don't need the second "foreach" loop, you're already iterating over
all the CGI params (see "B").
2. Always "use strict" (along with perl -w and -T if you need it), this
helps to disallow some unsafe constructs (It would have noted that you never
use "my", for instance).
3. Use "or die" with your "open(DB_FILE..." this is a key operation, and you
need to know if it fails.
4. Process the file line by line rather than all at once. This scales
better.
Good Luck, Yaoxi!
To the gurus: I would appreciate any hints/elucidations on my
recommendations. Thanks!
>From: "Wu, Yaoxi" To: "'spug-list at pm.org'" Subject: SPUG: generating output
>with a cgi script Date: Mon, 2 Oct 2000 10:44:28 -0700
>
>
>This thing is driving me crazy; I hope someone can enlighten me. Please
>look at the following short cgi script:
>
>#!/usr/bin/perl -wT use CGI; $cgi = new CGI; print
>$cgi->header("text/plain"); open(DB_FILE, "test.bib"); undef $/; $line=;
>close DB_FILE;
>
>#### the following was displayed o.k. ##########
>
>print "Any string.\n"; print $cgi->param('source_type'),"\n";
>
>#### the following did not show up in the web browser window ###
>
>print "$line\n"; foreach $name ($cgi->param){ print "$name:\n"; foreach
>$value ($cgi-param($name)){ print " $values\n"; } }
>
>This simple script tries to display the content of a two-line text file, "
>test.bib", and the values of the parameters that the user input from a web
>page. I don't know why the statement, print "$line\n", displayed nothing,
>although when the script run off-line and was terminated with 'control-D',
>the file content was displayed. Also, why the values of the user-supplied
>parameters could not display in this "foreach" loop, but would display when
>printing individually? Thanks for any help.
_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.
Share information about yourself, create your own public profile at
http://profiles.msn.com.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
POST TO: spug-list at pm.org PROBLEMS: owner-spug-list at pm.org
Subscriptions; Email to majordomo at pm.org: ACTION LIST EMAIL
Replace ACTION by subscribe or unsubscribe, EMAIL by your Email-address
For daily traffic, use spug-list for LIST ; for weekly, spug-list-digest
Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/
More information about the spug-list
mailing list