Perl Script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Perl Script
# 1  
Old 08-28-2002
Perl Script

object: to convert my personal movie list to HTML on the fly via CGI.

Code:
#! /usr/bin/perl -w

use 5.005
use CGI qw(:standard *table);

$TITLE = "Movie List";

print header, start_html($TITLE), h1($TITLE);

open (MOVIELIST, "/export/home/mydir/movie.list") || die "NO GO ($!)";


        print table({-border=>undef},
                Tr({-align=>CENTER,-valign=>TOP},
                [
                        th(['Title', 'Genre','Rateing','Time','Production Company']),

while (<MOVIELIST>) {
($TITLE,$GENRE,$RATEING,$TIME,$PROD_CO)=split(/:/, $_);
                        td(['$TITLE' , '$GENRE' , '$RATEING' , '$TIME' , '$PROD_CO']),
};
                ]
                )
        );

# EXAMPLE
#        print table({-border=>undef},
#                caption('When Should You Eat Your Vegetables?'),
#                Tr({-align=>CENTER,-valign=>TOP},
#                [
#                   th(['Vegetable', 'Breakfast','Lunch','Dinner']),
#                   td(['Tomatoes' , 'no', 'yes', 'yes']),
#                   td(['Broccoli' , 'no', 'no',  'yes']),
#                   td(['Onions'   , 'yes','yes', 'yes'])
#                ]
#                )
#             );

ERRORS:
Code:
syntax error at ./movie.cgi line 18, near "foreach "
syntax error at ./movie.cgi line 21, near "}"
Execution of ./movie.cgi aborted due to compilation errors.

SAMPLE movie.list:
Code:
Godfather I:Crime, Drama:R:175:Paramount
Godfather II:Crime:R:200:Paramount
Godfather III:Crime:R:161:Paramount
Young and Dangerous 1:Action, Adventure:IIB:99:Mei Ha Laser Disk Co
Young and Dangerous 2:Action, Adventure:IIB:99:Mei Ha Laser Disk Co
Young and Dangerous 3:Action, Adventure:II:98:Universe Laser & Video Co
Young and Dangerous 4:Action, Adventure:III:109:Mei Ha Laser Disk Co
Young and Dangerous 5:Action, Adventure:IIB:115:Universe Laser & Video Co
Young and Dangerous Prequel:Action, Adventure:III:115:Universe Laser & Video Co

# 2  
Old 08-28-2002
1) I don't understand why the one error says:

syntax error at ./movie.cgi line 18, near "foreach "

since there is no "foreach" in your code, but I'm assuming it's referring to:
Code:
while (<MOVIELIST> ) {
($TITLE,$GENRE,$RATEING,$TIME,$PROD_CO)=split(/:/, $_);
                        td(['$TITLE' , '$GENRE' , '$RATEING' , '$TIME' , '$PROD_CO']),
};

since it's basically the same in functionality as a "foreach" loop.

2) I don't see anything wrong with the above part, except that I don't know if the parenthesis around <MOVIELIST> matter, since I've never used them. I've always coded:

while <MOVIELIST> {

Also, you may need to take that semicolon out which follows the bracket that closes the while loop.
Code:
while (<MOVIELIST> ) {
 ...
};   # this semicolon may be causing the error

3) I'm curious - lines such as:
td(['$TITLE' , '$GENRE' , '$RATEING' , '$TIME' , '$PROD_CO'])
are you passing these values to a function called td() ?

Why not just use:
Code:
print "<table border=0>
 <tr align=\"center\" valign=\"top\">
  <th>Title</th>
  <th>Genre</th>
  <th>Rating</th>
  <th>Time</th>
  <th>Production Company</th>
 </tr>";

while <MOVIELIST> {
 ($TITLE,$GENRE,$RATEING,$TIME,$PROD_CO)=split(/:/);
 print " <tr align=\"center\" valign=\"top\">
  <td>$TITLE</td><td>$GENRE</td><td>$RATEING</td><td>$TIME</td><td>$PROD_CO</td>
 </tr>";

print "</table>";

# 3  
Old 08-28-2002
Got it working. ;) my first Perl Script that does something useful...

oombera: i want to use the shortcuts for html that are part of the CGI.pm module. td() = table data open and close.


The following script will take a list of movies from a file and sort them ALPHABETICLY then print them into a table on the web.
Code:
#! /usr/bin/perl -w

use CGI qw(:standard :html3);

print header, h4($PTITLE), start_html($PTITLE), hr;

$PTITLE = "Movie List";
$MOVIEFILE = "/export/home/mxdooley/movie/movie.list";

open (MOVIELIST, $MOVIEFILE) || bail ("cannot open $MOVIEFILE: $!");
@LIST=sort(<MOVIELIST>);

foreach (@LIST) {
        ($title, $genre, $rateing, $time, $prod_co) = split(/:/, $_);
                push(@TITLE,$title);
                push(@GENRE,$genre);
                push(@RATEING,$rateing);
                push(@TIME,$time);
                push(@PROD_CO,$prod_co);
                push(@COUNT,$#TITLE+1);
};

@AMOVIES = (\@TITLE, \@GENRE, \@RATEING, \@TIME, \@PROD_CO, \@COUNT);

@tmovie = (0 .. $#TITLE);
@headings = qw(# Title Genre Rateing Time Prod_Company);
@rows = th(\@headings);

foreach (@tmovie) {
push(@rows,td(["$AMOVIES[5][$_]","$AMOVIES[0][$_]","$AMOVIES[1][$_]","$AMOVIES[2][$_]","$AMOVIES[3][$_]","$AMOVIES[4][$_]"]));
};

print table({-border=>undef},
                Tr(\@rows)
);

print p(`date`);
print end_html;

sub bail {
        $error="@_";
        print h1("Unexpected Error"), p($error), end_html;
        die $error;
}


Last edited by Optimus_P; 08-29-2002 at 01:22 PM..
# 4  
Old 08-29-2002
Oh, ok. Not that familiar with CGI.pm. That's a great feature; really makes the code look clean.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

PERL: In a perl-scripttTrying to execute another perl-script that SETS SOME VARIABLES !

I have reviewed many examples on-line about running another process (either PERL or shell command or a program), but do not find any usefull for my needs way. (Reviewed and not useful the system(), 'back ticks', exec() and open()) I would like to run another PERL-script from first one, not... (1 Reply)
Discussion started by: alex_5161
1 Replies

2. Shell Programming and Scripting

Excuting perl script from within a perl script with variables.

Not sure what I am doing wrong here, but I can print the list with no issue. Just a blank screen with the 'do'. #!/usr/bin/perl open FILE, "upslist.txt"; while ($line=<FILE>){ if ($line=~/^(.*?),(.*?)$/){ #print "ups:$1 string:$2\n"; do 'check_snmp_mgeups-0.1.pl -H $1 -C $2'; } ... (1 Reply)
Discussion started by: mrlayance
1 Replies

3. Shell Programming and Scripting

Perl : embedding java script with cgi perl script

Hi All, I am aware that html tags can be embedded in cgi script as below.. In the same way is it possible to embed the below javascript in perl cgi script ?? print("<form action="action.htm" method="post" onSubmit="return submitForm(this.Submitbutton)">"); print("<input type = "text"... (1 Reply)
Discussion started by: scriptscript
1 Replies

4. Shell Programming and Scripting

executing perl script from another perl script : NOT WORKING

Hi Folks, I have 2 perl scripts and I need to execute 2nd perl script from the 1st perl script in WINDOWS. In the 1st perl script that I had, I am calling the 2nd script main.pl =========== print "This is my main script\n"; `perl C:\\Users\\sripathg\\Desktop\\scripts\\hi.pl`; ... (3 Replies)
Discussion started by: giridhar276
3 Replies

5. Shell Programming and Scripting

calling a perl script with arguments from a parent perl script

I am trying to run a perl script which needs input arguments from a parent perl script, but doesn't seem to work. Appreciate your help in this regard. From parent.pl $input1=123; $input2=abc; I tried calling it with system("/usr/bin/perl child.pl $input1 $input2"); and `perl... (1 Reply)
Discussion started by: grajp002
1 Replies

6. Shell Programming and Scripting

HELP on Perl array / sorting - trying to convert Korn Shell Script to Perl

Hi all, Not sure if this should be in the programming forum, but I believe it will get more response under the Shell Programming and Scripting FORUM. Am trying to write a customized df script in Perl and need some help with regards to using arrays and file handlers. At the moment am... (3 Replies)
Discussion started by: newbie_01
3 Replies

7. Shell Programming and Scripting

Perl :How to print the o/p of a Perl script on console and redirecting same in log file @ same time.

How can i print the output of a perl script on a unix console and redirect the same in a log file under same directory simultaneously ? Like in Shell script, we use tee, is there anything in Perl or any other option ? (2 Replies)
Discussion started by: butterfly20
2 Replies

8. Shell Programming and Scripting

perl/unix: script in command line works but not in perl

so in unix this command works works and shows me a list of directories find . -name \*.xls -exec dirname {} \; | sort -u | > list.txt but when i try running a perl script to run this command my $query = 'find . -name \*.xls -exec dirname {} \; | sort -u | > list.txt';... (2 Replies)
Discussion started by: kpddong
2 Replies

9. Shell Programming and Scripting

[Perl] Accessing array elements within a sed command in Perl script

I am trying to use a script to replace the header of each file, whose filename are stored within the array $test, using the sed command within a Perl script as follows: $count = 0; while ( $count < $#test ) { `sed -e 's/BIOGRF 321/BIOGRF 332/g' ${test} > 0`; `cat 0 >... (2 Replies)
Discussion started by: userix
2 Replies

10. Shell Programming and Scripting

Perl: Run perl script in the current process

I have a question regarding running perl in the current process. I shall demonstrate with an example. Look at this. sh-2.05b$ pwd /tmp sh-2.05b$ cat test.sh #! /bin/sh cd /etc sh-2.05b$ ./test.sh sh-2.05b$ pwd /tmp sh-2.05b$ . ./test.sh sh-2.05b$ pwd /etc sh-2.05b$ So... (10 Replies)
Discussion started by: vino
10 Replies
Login or Register to Ask a Question