return to first page linux journal archive
keywordscontents

Listing 4. Program to Redirect Browser to Highest Numbered File

#!/usr/bin/perl -wT
# program redirects the user's browser to the
# highest-numbered file matching the pattern
# file-n.html.
use strict;
use vars qw($query $directory @files $url $a_number $b_number);
use diagnostics;
use CGI;    # from http://www.perl.com/CPAN/
# Create an instance of CGI
$query = new CGI;
# Directory in which the documents reside
$directory = "/usr/local/apache/share/htdocs/";
# Open the directory
if (opendir(DIR, $directory))
{
    # Grab all of the "file-n.html" files, sort 
    # them by n, and put them in @files
    @files = sort by_number
	grep {/^file-[0-9]+\.html$/} readdir(DIR);
    # Close the directory
    closedir DIR;
}
else
{
    &log_and_die("Problem opening \"$directory\": $!");
}
# Grab the name of the highest file, and create a 
# URL based on it
$url = "/" . $files[$#files];
# Redirect the user to the appropriate graphic
print $query->redirect($url);
sub log_and_die
{
    # Get the message
    my $message = shift;
    # Print the error message to the user's
    # browser
    print $query->header("text/html");
    print $query->start_html(-title => "Error!");
    print "<P>$message</P>\n";
    print $query->end_html;
}
sub by_number
{
    # Grab the first file's number
    if ($a =~ /^file-(\d+).html$/)
    {
	$a_number = $1;
    }
    # Grab the second file's number
    if ($b =~ /^file-(\d+).html$/)
    {
	$b_number = $1;
    }
    # Compare the numbers
    return ($a_number <=> $b_number);
}