Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 5 May 2007 12:17:39 -0700 (PDT)
From:      White Hat <pigskin_referee@yahoo.com>
To:        FreeBSD Users Questions <freebsd-questions@freebsd.org>
Subject:   Perl Script in Apache
Message-ID:  <19743.80650.qm@web34410.mail.mud.yahoo.com>

next in thread | raw e-mail | index | archive | help
I tried to get an answer to this on the Apache forum,
but unfortunately, I was not successful.

Running Apache on a FreeBSD-6.2 machine, I am
attempting to set up a web page that changes a
specific image on a daily basis. I found a Perl script
that is supposed to do this, but it seems to fail. All
that is displayed is a red [X]. If I run the script
from the command line, it works, as it should. Well,
at least it displays the correct file name.

I assume I am doing something wrong with the actual
web page, or else I am incorrectly calling the Perl
script.

This is a commented version of the script.

=================================================

To display an image simply use this in your HTML:
<img
src="/usr/local/www/apache22/data/perl_script.pl">

#!/usr/local/bin/perl

# find out the day of the year
my $day_of_year = (localtime(time()))[7];

# define the path where the images live "." is the
current directory
$path = "/usr/local/www/apache22/data/pics";
# read all the jpg, gif or png filenames from the
directory into an array
opendir(DIR, $path);
@files = grep { /\.(jpg|gif|png)$/i } readdir(DIR);
closedir(DIR);

# sort the filenames alphabetically
@files = sort( {lc $a cmp lc $b} @files);

# count the number of images
$no_of_images = scalar(@files);

# Now the fun bit :) We loop through the images once
before
# repeating them in the same order. If we divide the
current
# number of day of the year by the number of images in
the
# directory we get the number of times have repeated
the images.
# We are interested in the remainder of this
calculation (this
# is calculated using the % operator). Note - there
must be
# less than 365 images in the directory! We need to
subtract
# one from this number because arrays start at zero
not 1!
if ( $no_of_images <= $day_of_year ) {
  $image_to_use = ($day_of_year % $no_of_images)-1;
}
else {
  $image_to_use = $day_of_year-1;
};
print "Location: $files[$image_to_use]\n\n";

=================================================


-- 
White Hat 
pigskin_referee@yahoo.com


 
____________________________________________________________________________________
Looking for earth-friendly autos? 
Browse Top Cars by "Green Rating" at Yahoo! Autos' Green Center.
http://autos.yahoo.com/green_center/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19743.80650.qm>