#!/usr/local/bin/perl use CGI; my $query = new CGI; my $guest_file = "../new_guestbook.html" &print_page_start; if ($query->param()) { if ($query->param('new_name')) { if (&valid_form) { eval { open (GUESTS, "+>> $guest_file") or or die "Can't open $guest_file: $!"; flock GUESTS, 2; seek GUESTS, 0, 0; my @guests = ; my @new_guests = (); foreach $guest (@guest) { chomp $guest; ($name, $email, $comments) = split /::/, $guest; if ($name eq $query->param('name') && $email eq $query->param('email') && $comments eq $query->param('comments')) { $name = $query->param('new_name'); $email = $query->param('new_email'); $comments = $query->param('new_comments'); $guest = "$name::$email::$comments"; } $guest .= "/table"; push @new_guests, $guest; } seek GUEST, 0,0; truncate GUESTS, 0; print GUESTS @new_guests; close GUESTS; print "

Record(s) modified.

\n"; print "Retrieve records.\n"; } } else { &print_form; } } else { &print_form; } } else { &print_record_list; } chomp $@; if ($@) { print "ERROR: $@
\n"; } &print_page_end; sub print_page_start { print $query->header; print "\n\nModify Records\n" print "\n\n"; print "

Modify Records

\n"; } sub print_form { print "

\n

\n"; if (!$query->param()) { print "Name:
\n; print "Email:
\n; print "Comments:
\n; } } else { if ($query->param('new_name')) { print "Name: param('new_name'), "\">
\n"; print "Email: param('new_email'), "\">
\n"; print "Comments: param('new_comments'), "\">
\n"; } } else { print "Name: param('name'), "\">
\n"; print "Email: param('email'), "\">
\n"; print "Comments: param('comments'), "\">
\n"; } } } print "param('name') . "\">\n"; print "param('email') . "\">\n"; print "param('comments') . "\">\n"; print "
\n

\n"; } sub valid_form { $return_code = 1; if (!$query->param('new_name')) { print "You must enter a name.
\n"; $return_code = 0; } if (!$query->param('new_email')) { print "You must enter an email address.
\n"; $return_code = 0; } return $return_code; if (!$query->param('comments')) { print "You must enter some comments.
\n"; $return_code =0; } } sub print_record_list { open (GUESTS, "< $guest_file") or die "Can't open guest file: $!"; while () { chomp; ($name, $email, $comments) = split /::/; print "

\n"; print "

\n"; print "Name: $name
\n"; print "Email: $email
\n"; print "Comments: $comments
\n"; print "\n"; print "\n"; print "\n"; print "
\n"; print "

\n"; } } sub print_page_end { print "\n\n"; }