#!/usr/bin/perl
#This section writes a chunk of "static" HTML; i.e. HTML that is the
#same on each hit
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"
\"http://www.w3.org/TR/html4/loose.dtd\">\n";
print "<html>\n";
print "<head>\n";
print "<meta name=\"keywords\" content=\"Rochdale, Rochfest, music, festivals, bands\">\n";
print "<meta name=\"description\" content=\"This is the website of the planned Rochfest 2007 music festival in Rochdale (UK). The festival is scheduled to take place in July 2007 with a target attendance of 5000. There will be 30 bands playing over three days.\">\n";
print "<meta http-equiv=\"Content-Type\" content=\"text/html\" charset=\"iso-8859-1\">\n";
print "<title>Welcome to Rochfest</title>\n";
print "</head>\n";
print "<body background=\"zen.gif\">\n";
print "<p align=\"center\"><img id=\"logo\" src=\"rochfest-logo.gif\" width=\"597\" height=\"140\"></p>\n";
print "<p align=\"center\"><a href=\"index2.htm\"><img src=\"enter.gif\" id=\"enter\" width=\"200\" height=\"200\" border=\"0\"></a></p>\n";
#This section grabs data from a text file that describes the current hit count
$flag1 = 0;
open (file1, "visitor_stat.txt") || &finish_page;
unless (flag1 == 0) {die("Cannot open visitor_stat.txt");}
@data = <file1>;
close (file1);
print "<p align=\"center\">";
#This section writes the "active" HTML content based on the data just grabbed; i.e.
#<img> tags for the counter's number tiles
for ($c = 0; $c < 4; $c++)
{
if ($data[$c] == 0) {print "<img src=\"num0.gif\">";}
elsif ($data[$c] == 1) {print "<img src=\"num1.gif\">";}
elsif ($data[$c] == 2) {print "<img src=\"num2.gif\">";}
elsif ($data[$c] == 3) {print "<img src=\"num3.gif\">";}
elsif ($data[$c] == 4) {print "<img src=\"num4.gif\">";}
elsif ($data[$c] == 5) {print "<img src=\"num5.gif\">";}
elsif ($data[$c] == 6) {print "<img src=\"num6.gif\">";}
elsif ($data[$c] == 7) {print "<img src=\"num7.gif\">";}
elsif ($data[$c] == 8) {print "<img src=\"num8.gif\">";}
elsif ($data[$c] == 9) {print "<img src=\"num9.gif\">";}
}
print "</p></body></html>\n";
#Next, the text file needs to be updated with an incremented hit count.
$hit_count = 0;
&char_2_int;
$hit_count++;
$visitor_data = sprintf("%u", $hit_count);
&format_data;
$lockfile = "lockfile1.txt";
while (-e $lockfile)
{
sleep 1;
}
open (LOCK, ">$lockfile") || die("Cannot open lock file");
close (LOCK);
open (file2, ">visitor_stat.txt");
for ($c = 0; $c < 4; $c++)
{
print file2 "$entry[$c]\n";
}
close (file2);
unlink ($lockfile);
sub finish_page{
$flag1 = 1;
print "</body></html>\n";
}
#This function converts a number in string form (e.g. "1234"), to it's integer
#equivalent (i.e. 1234).
sub char_2_int{
local ($c, $d, $e);
for ($c = 0; $c < 4; $c++)
{
$d = 3 - $c;
$e = 10**$d;
if ($data[$c] == 0) {}
elsif ($data[$c] == 1) {$hit_count = $hit_count + (1 * $e)}
elsif ($data[$c] == 2) {$hit_count = $hit_count + (2 * $e)}
elsif ($data[$c] == 3) {$hit_count = $hit_count + (3 * $e)}
elsif ($data[$c] == 4) {$hit_count = $hit_count + (4 * $e)}
elsif ($data[$c] == 5) {$hit_count = $hit_count + (5 * $e)}
elsif ($data[$c] == 6) {$hit_count = $hit_count + (6 * $e)}
elsif ($data[$c] == 7) {$hit_count = $hit_count + (7 * $e)}
elsif ($data[$c] == 8) {$hit_count = $hit_count + (8 * $e)}
elsif ($data[$c] == 9) {$hit_count = $hit_count + (9 * $e)}
}
}
#This function copies the contents of a string variable into a character array, to
#allow easy indexing later.
sub format_data{
local ($c);
@entry = ("a", "b");
for ($c = 0; $c < 4; $c++)
{
$entry[$c] = substr($visitor_data, $c, 1);
}
}