Hi all,
I have a report in flat text file report.data. I would like to scan
serial number which I have and compare with the report. Here is what I did:
In my html file.
<html><head><title>Scanning and compare </title></head>
<body bgcolor=white>
<BR><CENTER>
<form action="compare.cgi" method="POST">
Scan serial number:
<input type="text" name="name" size=30>
<input type="submit" value="Search">
</form>
</CENTER>
</body>
</html>
and here is my compare.cgi
#!/usr/local/perl
use Time::Local;
$today = timelocal(localtime);
$now = &unix_to_date($today - 3600);
sub unix_to_date {
my ($date) = $_[0]; # reads in variable passed to subroutine
+reates array of month names
my (@months) = qw!01 02 03 04 05 06 07 08 09 10 11 12!; #c
@time = (localtime($date))[3,4,5,0,0]; #creates array of date
+ from unix time
$time[2] += 1900; # converts year to proper format
return "$months[$time[1]]/$time[0]/$time[2] ";
}
$datafile = "report.data";
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/~!/ ~!/g;
$FORM{$name} = $value;
}
$searchstr = $FORM{'name'};
open(INF,$datafile);
@mydata = <INF>;
close(INF);
print "Content-type:text/html\n\n";
print "<html><head><title>Check Report</title></head>\n";
print "<body><center><h3>Check Report</h3></center>\n";
@results = grep(/$searchstr/i,@mydata);
if ($#results >= 0) {
foreach $i (@results) {
chomp($i);
($sn , $Location, $starttime, $endtime, $item, $family, $stat
+us) = split(/|/,$i);
print "<center><h2><font color=red> $FORM{'name'} This serial
+is in Report List </font></h2></center>\n";
open(OUTF,">>found_it.txt") or dienice("Couldn't open foun
+d_it.txt for writing: $!");
# This locks the file so no other CGI can write to it at t
+he
# same time...
flock(OUTF,2);
# Reset the file pointer to the end of the file, in case
# someone wrote to it while we waited for the lock...
seek(OUTF,0,2);
print OUTF "$FORM{'name'}\|$item\|\|$now\n";
}
} else {
print "<center><h2><font color=green> $FORM{'name'} . Alert! This
+serial number is not in Report list, Please check.</font></h2></cent
+er>\n";
open(OUTF,">>found_it.txt") or dienice("Couldn't open found_it.txt
+ for writing: $!");
# This locks the file so no other CGI can write to it at t
+he
# same time...
flock(OUTF,2);
# Reset the file pointer to the end of the file, in case
# someone wrote to it while we waited for the lock...
seek(OUTF,0,2);
print OUTF "$FORM{'name'}\|$item\|NA\|$now";
}
print "</body></html>\n";
Somehow i can not write $item in report.data into found_it.txt
can you help me rewrite this script so i can learn it.
Thank you very much,