in reply to writing to a file in a cgi script

There is a cunning module which may help you --File::CounterFile.

gav^

Replies are listed 'Best First'.
Re: Re: writing to a file in a cgi script
by Kanji (Parson) on Feb 08, 2002 at 07:29 UTC

    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.


      Awesome, I thank all of your for your help.