While I agree that File::CounterFile (alt.) is worth using in this instance, it (IIRC) doesn't provide any method for reseting the counter, so your forced to unlink the counter file first, or do something like...
$counter->lock;
$counter->dec while $counter->value > $DEFAULT_VALUE;
$counter->unlock;
Neither solution seemed all that graceful to me (the latter being quite painful if the current value is of any significance), so I ended up writing a patch to add a reset method ...
sub reset {
my($self,$default) = @_;
$default = $File::CounterFile::DEFAULT_INITIAL
unless defined $default;
if ($self->locked) {
$self->{'value'} = $default;
$self->{updated} = 1;
} else {
$self->lock;
$self->{'value'} = $default;
$self->{updated} = 1;
$self->unlock;
}
$self->{'value'}; # return value
}
... which'd turn sidhartha's code into ...
#!/usr/bin/perl -w
use strict;
use File::CounterFile;
my $COUNTER = '/path/to/bg.cnt';
my $DEFAULT_VALUE = 0;
my @BACKGROUND = qw(
corner.jpg anduin.jpg gandalf.jpg
ford.jpg
);
my $c = File::CounterFile->new( $COUNTER, $DEFAULT_VALUE );
$c->reset if $c->inc > $#BACKGROUND;
print <<EndOfHTML;
Content-type: text/html
<td background="images/$BACKGROUND[$c]">
EndOfHTML
--k.
| [reply] [d/l] [select] |
Awesome, I thank all of your for your help.
| [reply] |