Thanks for the critisism about cgi.pm, but I really Need help with searching flatfile and updating it, not cgi.pm. Now I have some new code here that maybe you could help me figure out why the script always clobbers and not ammends the file if the $browser is $not_found.
My form:
<FORM ACTION="cgi-bin/basic3.pl" METHOD="POST">
<SELECT NAME="browser">
<OPTION VALUE="microsoft">microsoft</OPTION>
<OPTION VALUE="netscape">netscape</OPTION>
<OPTION VALUE="aol">aol</OPTION>
<OPTION VALUE="mozilla">mozilla</OPTION>
<OPTION VALUE="opera">opera</OPTION>
</SELECT>
<INPUT TYPE="SUBMIT" VALUE="Submit">
</FORM>
My script:
#!/perl/bin/perl
use CGI;
$cgi = new CGI;
for $key ( $cgi->param() ) {
$form{$key} = $cgi->param($key);
}
$logpath = "data/browser.dat";
$browser = $form{'browser'};
open (LOG, "$logpath");
@data = <LOG>;
close(LOG);
$not_found = 1;
open (LOG, ">$logpath");
foreach $line(@data) {
chomp($line);
($fcount,$fbrowser)= split(/\|/,$line);
if ($fbrowser eq $browser) {
$not_found = 0;
$fcount = $fcount+1;
print LOG "$fcount|$fbrowser\n";
}
else {
print "$line";
}
}
close(LOG);
if($not_found) {
open (LOG,">>$logpath");
print LOG "1|$browser";
close(LOG);
}
# prints out log to browser
print "Content-type: text/html\n\n";
open (LOG, "$logpath");
@data = <LOG>;
close(LOG);
foreach $line(@data) {
chomp($line);
print "$line\n";
}
close(LOG);
print "\n\n$not_found";
|