You have to set the count to zero outside the loops or the count will always be returned to zero after every loop. You then need to increase the count only when a line is written. That's a true count of the results. Finally, you need to add an extra line to print the results.
My additions below are in bold.
$keyword=$FORM{keyword};
if($listed ne 1)
print "Content-type: text/html\n\n";
print "<h2>Here are the files we found</h2>\n\n";
$count = 0;
chdir("/this/must/be/an/absolute/path");
opendir(DIR, ".");
while($file = readdir(DIR))
{
next if ($file !~ /.html/);
open(FILE, $file);
$foundone = 0;
$title = "";
while (<FILE>)
{
if (/$keyword/i)
{
$foundone = 1;
}
if(/<TITLE>/)
{
chop;
$title = $_;
$title =~ s/<TITLE>//g;
$title =~ s/<\/TITLE>//g;
}
}
if($title eq "")
{
$title = $file;
}
if($foundone)
{
print "<A HREF=/sub/sub/sub/$file>$title</A><BR>";
$listed=1;
$finalcount = $count++;
}
close(FILE);
}
closedir(DIR);
print "<P>We found $finalcount pages.<P>";
{print "Sorry, nothing this time. <A HREF=/sub/sub/sub/searchengine.html>Try again</A>";}
else
{print "<P>That's all. Do you want a <A HREF=/sub/sub/sub/searchengine.html>new search?</A>";}
exit;