in reply to Re: writing to a file in a cgi script
in thread writing to a file in a cgi script

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.


Replies are listed 'Best First'.
Re: Re: Re: writing to a file in a cgi script
by sidhartha (Acolyte) on Feb 08, 2002 at 15:45 UTC
    Awesome, I thank all of your for your help.