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,

In reply to How to write this code correctly ??? Please help by britney

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.