[21] Non riesco ancora ad ottenere il lock. Voglio solo incrementare un numero nel file. Come faccio?
contatore file, contatore
Non vi ha mai detto nessuno che i contatori di accesso sulle pagine web
sono inutili? Non contano gli accessi reali, sono una perdita di tempo e
servono solo ad alimentare la vanità di chi li utilizza. Meglio
prendere un numero casuale. È più realistico.
Ad ogni modo, questo è quello che potete fare se proprio non potete
farne a meno:
use Fcntl qw(:DEFAULT :flock);
sysopen(FH, "numfile", O_RDWR|O_CREAT) or die "impossibile aprire numfile: $!";
flock(FH, LOCK_EX) or die "impossibile eseguire flock su numfile: $!";
$num = <FH> || 0;
seek(FH, 0, 0) or die "impossibile tornare all'inizio di numfile: $!";
truncate(FH, 0) or die "impossibile troncare numfile: $!";
(print FH $num+1, "\n") or die "impossibile scrivere numfile: $!";
close FH or die "impossibile chiudere numfile: $!";
Ecco un contatore di accessi alla pagina decisamente migliore :
Copyright (c) 1997, 1998, 1999, 2000, 2001 Tom Christiansen e Nathan
Torkington. Tutti i diritti riservati.
Questa documentazione è libera; puoi ridistribuirla e/o
modificarla secondo gli stessi termini applicati al Perl.
Indipendentemente dalle modalitè di distribuzione, tutti gli esempi di
codice in questo file sono rilasciati al pubblico dominio. Potete, e
siete incoraggiati a farlo, utilizzare il presente codice o qualunque
forma derivata da esso nei vostri programmi per divertimento o per profitto.
Un semplice commento nel codice che dia riconoscimento alle FAQ sarebbe cortese
ma non è obbligatorio.
mongers@perl.it è la lista ufficiale di Perl Mongers Italia per
porre quesiti di tipo tecnico, per rimanere aggiornato su meeting,
incontri, manifestazioni e novità su Perl.it. Iscriviti!