Can't get my head wrapped around CGI/Perl


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Can't get my head wrapped around CGI/Perl
# 1  
Old 01-26-2009
Can't get my head wrapped around CGI/Perl

Hello,

I am about 3 weeks new to CGI/ Perl scripting and so far some concepts I can wrap my head around perfectly but others not so much.

I was wondering if I could get some help in making a script that will pull from a text file and put back into a form. I can make a script that takes input from an HTML form and puts it back out as another Form, but I can't seem to get this to work back with only input from a TXT file. Any sort of online tutorial would be perfect.

I have been hitting Google since Saturday morning trying to find something out there that will all of a sudden make all I have read just click, but so far nothing has worked.
# 2  
Old 01-26-2009
I'm a noob at scripting in general and I have done a lot of googling for help...this has helped me:

OOPWeb.com - Perl 4 Perl Newbies by Shlomi Fish
# 3  
Old 01-26-2009
I love Perl, but if you're somewhat new to Perl and need to do a lot of scripting for the Web, try using PHP. It's similar to Perl, but much better suited for handling web form data.

Anyway, I don't understand your requirement to take input from a TXT file and output the data as a form. How is the input data structured, and what kind of form are you trying to make? Is there more than one input TXT file? Does each form look the same for each TXT file? How do you define the placement of elements on the page? What kind of validation do you need for user input? What happens to the form data once you've processed it?
# 4  
Old 01-26-2009
Below the code is a rough breakdown of the TXT file I am pulling in from.
I ran a basic perl -c on this to see any syntax errors, and I got back a
"Global symbol "@semm_count" requires explicit package name at Line 24.

So I apparently have that variable set wrong, but I am not sure how. I am missing some larger piece and not sure what it is or how to get it to click in my head, I am thinking about this way to much. SQL wasn't this hard to pick up and neither was Flash or Javascript

All I need to get this to do is display:

Seminar Name: Number registered:
1 2
2 3
3 1
4 2
total Students registered: 8

Code:
#!c:/perl/bin/perl.exe
#super.cgi - saves form data to a file, and creates a dynamic
#Web page that displays a message and survey statistics
print "Content-type: text/html\n\n";
use CGI qw(:standard);
use strict;

#declare variables
my ($name, $semm, @records);
#my @semm_count = (0, 0, 0, 0);
my %semm_count = ("1", 0,
				  "2", 0,
				  "3", 0,
				  "4", 0);

#calculate survey statistics
open(INFILE, ">>", "c05ex5.txt")
	or die "Error opening c05ex5.txt. $!, stopped";
@records = <INFILE>;
close(INFILE);
foreach my $rec (@records) {
	chomp($rec);
	($name, $semm) = split(/,/, $rec);
	$semm_count[$semm] = $semm_count[$semm] + 1;
	}

#generate HTML acknowledgment
print "<HTML><HEAD><TITLE>WKRK-TV</TITLE></HEAD>\n";
print "<BODY>\n";
print "<H2>Seminar Total</H2>\n";

print "<TABLE>\n";
print "<TR><TD>Seminar</TD>    <TD>Total</TD></TR>\n";

foreach my $key ("Computer Maintenance", "Microsoft Office", "Unix Essentials", "CGI/PErl") {
	print "<TR><TD>$key</TD> <TD>$semm_count{$key}</TD></TR>\n";
	}

print "</TABLE>\n";
print "</BODY></HTML>\n";


Text file:
StudentA,1
StudentB,2
StudentC,3
StudentD,4
StudentE,1
StudentF,2
StudentG,2
StudentH,4



# 5  
Old 01-26-2009
Quote:
Originally Posted by sennex
I am thinking about this way to much. SQL wasn't this hard to pick up and neither was Flash or Javascript
You sure you can't just do PHP? It's the P in "LAMP" or "XAMP". You can download an entire development kit here and have PHP running on your server in minutes: apache friends - xampp for windows for the server kit, and PHPEclipse - Trac for a great IDE.
# 6  
Old 01-26-2009
At this point I cannot, I think I found part of my problem though.
After more research I changed a few sections to this:

Code:
#!c:/perl/bin/perl.exe
#super.cgi - saves form data to a file, and creates a dynamic
#Web page that displays a message and survey statistics
print "Content-type: text/html\n\n";
use CGI qw(:standard);
use strict;

#declare variables
my ($name, $semm, @records);
#my @semm_count = (0, 0, 0, 0);
my %semm_count = ("1", 0,
				  "2", 0,
				  "3", 0,
				  "4", 0);

#calculate survey statistics
open(INFILE, ">>", "c05ex5.txt")
	or die "Error opening c05ex5.txt. $!, stopped";
@records = <INFILE>;
close(INFILE);
foreach my $rec (@records) {
	chomp($rec);
	($name, $semm) = split(/,/, $rec);
	$semm_count{$semm}++;
	}

#generate HTML acknowledgment
print "<HTML><HEAD><TITLE>WKRK-TV</TITLE></HEAD>\n";
print "<BODY>\n";
print "<H2>Seminar Total</H2>\n";

print "<TABLE>\n";
print "<TR><TD>Seminar</TD>    <TD>Total</TD></TR>\n";

foreach my $key ("Computer Maintenance", "Microsoft Office", "Unix Essentials", "CGI/PErl") {
	print "<TR><TD>$key</TD> <TD>$semm_count{$key}</TD></TR>\n";
	}

print "</TABLE>\n";
print "</BODY></HTML>\n";

# 7  
Old 01-26-2009
I've commented the bugs below...

Code:
#!c:/perl/bin/perl.exe
#super.cgi - saves form data to a file, and creates a dynamic
#Web page that displays a message and survey statistics
print "Content-type: text/html\n\n";
use CGI qw(:standard);
use strict;

#declare variables
my ($name, $semm, @records);
#my @semm_count = (0, 0, 0, 0);
my %semm_count = ("1", 0,
				  "2", 0,
				  "3", 0,
				  "4", 0);

#calculate survey statistics
open(INFILE, "<", "c05ex5.txt")       ## You had >> which APPENDS to the file in question. Now it reads from the file.
	or die "Error opening c05ex5.txt. $!, stopped";
@records = <INFILE>;
close(INFILE);
foreach my $rec (@records) {
	chomp($rec);
	($name, $semm) = split(/,/, $rec);
	$semm_count{$semm}= $semm_count{$semm} + 1;    ## You defined a hash, but were storing into a array. I changed it to store into the hash.
}

#generate HTML acknowledgment
print "<HTML><HEAD><TITLE>WKRK-TV</TITLE></HEAD>\n";
print "<BODY>\n";
print "<H2>Seminar Total</H2>\n";

print "<TABLE>\n";
print "<TR><TD>Seminar</TD>    <TD>Total</TD></TR>\n";

foreach my $key ("Computer Maintenance", "Microsoft Office", "Unix Essentials", "CGI/PErl") {
	print "<TR><TD>$key</TD> <TD>$semm_count{$key}</TD></TR>\n";   
## Previously, you defined the indexes of semm_count to be numbers, not words. Where do these key names come from anyway?
}

print "</TABLE>\n";
print "</BODY></HTML>\n";


Last edited by otheus; 01-26-2009 at 01:37 PM.. Reason: edited to restore color tags
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

PERL-CGI learning

Hello All, I am actually learning PERL and more interested to learn CGI script too. Can any suggest a forum or weblink which is more helpful for a dummy CGI developer. Thanks (6 Replies)
Discussion started by: posix
6 Replies

2. OS X (Apple)

Perl CGI

I am trying to get my MacBook Pro with 10.8 Mt Lion set up to run Perl CGI scripts. Having a problem. I can start Apache Web Server with no problems. Why do I put the static and dynamic scripts? I which directory? I have looked at this article:... (3 Replies)
Discussion started by: djehresmann
3 Replies

3. Shell Programming and Scripting

CGI Perl : while loop in CGI perl

Hi Team, I am trying to connect to database(succeeded ) and print the records on the browser using while loop. But the elements of array are not displayed instead while loop is displayed directly. Instead of the below I can embed html statements in print but I am looking for the below style as I... (1 Reply)
Discussion started by: scriptscript
1 Replies

4. Shell Programming and Scripting

Perl CGI : unable to download the excel sheet from perl cgi page

Hi All, I have written an cgi perl script that displays an image(Excel image) and when clicked on that Image I need to download a excel sheet. I made sure that excel sheet exists in the folder with the given name but still I am not able to download the sheet. print "<center><table... (2 Replies)
Discussion started by: scriptscript
2 Replies

5. Shell Programming and Scripting

Perl cgi pages out of cgi-bin folder in WINDOWS

Hi team, I have a typical problem with cgi pages in apache webserver in WINDOWS I am able to execute(display) the pages that are saved in cgi-bin folder. But I am not able to execute the pages stored in htdocs or other folder other than cgi-bin folder. Could anyone please let me know how... (1 Reply)
Discussion started by: scriptscript
1 Replies

6. Shell Programming and Scripting

CGI in Perl

Hi, Am unfamiliar with using CGI modules in Perl. Though i checked in few sites about CGI , i dint get a clear idea. Can anyone please explain me the purpose of these statements, it ll be very helpful to me #!/usr/bin/perl use CGI qw/:standard/; use Storable; use Data::Dumper; my... (1 Reply)
Discussion started by: irudayaraj
1 Replies

7. Web Development

problem with exporting vairable from one perl cgi to another perl cgi script while redirecting.

Can anyone tell me how to export a variable from one perl CGI script to another perl cgi script when using a redirect. Upon running the login.pl the user is prompted to enter user name and password. Upon entering the correct credentials (admin/admin) the user is redirected to welcome page. My... (3 Replies)
Discussion started by: Arun_Linux
3 Replies

8. Shell Programming and Scripting

perl+CGI+mysql !!!!!!!

hi expert, I am totally new to perl CGI coding. And stop by below issue: 1> i have a script names conn.pl, which can connect to mysql and get the information of table user(id,name) 2> i copied above code into one CGI web page named user.cgi 3> when i view user.cgi in web browser, it toldme... (3 Replies)
Discussion started by: summer_cherry
3 Replies

9. UNIX for Dummies Questions & Answers

Apache Perl/CGI

Can any body help me with apache and cgi i'dont know how iconfigure apache to use cgi... and when i try to start apachectl it says there is no file... please help me...i have apache installed... (1 Reply)
Discussion started by: CreamHarry
1 Replies

10. Shell Programming and Scripting

Perl CGI.pm

my box is FreeBSD4.3 and I use Perl 5.0005_03. Here is the CGI script. test.cgi ...... if ($query->action eq 'detail') { ...... print $query->hidden('action', 'modify'); ...... } I found that the result of test.cgi?action=detail is not what I expected. the script does not... (4 Replies)
Discussion started by: tonyt
4 Replies
Login or Register to Ask a Question