CGI Show Online Users

Show Online Users

#!perl -w
use strict;

my $data_file="count-file.dat"; # The file that keeps a record of the visitors. 
my $timeout="100";              # The value (seconds) in which time to count visitors

my $time_now=time;
my $visitor_ip=$ENV{'REMOTE_ADDR'};
my $visitors="1";
my(@new);

open(DATA, "$data_file")|| file_error("Error reading <u>$data_file</u> : $!");
my @data=<DATA>;
close(DATA);

foreach my $data_value (@data){
my($logged_ip, $logged_time) = split(/\|/, $data_value);
my $time_diff=$time_now-$logged_time;
push(@new, $data_value) if ($time_diff <= $timeout);
}

open(UPDATED, ">$data_file")|| file_error("Error writing to <u>$data_file</u> : $!");
foreach my $record (@new) {
my($logged_ip, $logged_time) = split(/\|/, $record);
print UPDATED "$record" if ($visitor_ip ne $logged_ip);
$visitors++ if ($visitor_ip ne $logged_ip);
}
print UPDATED "$visitor_ip|$time_now\n";
close(UPDATED);

sub file_error {
 print "Content-type: text/html\n\n";
 print "<font face=Verdana size=2>@_</font>";
 exit;
}

print "Content-type: text/html\n\n";
print "$visitors";

exit;