No da muchas pistas, el error...
Prueba antes a instalar y ejecutar mi
CGI mínimo.
Fíjate en el uso de
use CGI::Carp qw(fatalsToBrowser);
que manda los mensajes de error a la ventana. Podría dar más información.
Voy a decir una posible causa.
El programa hace dos operaciones de lectura y escritura de archivos. Quizás no sea capaz de encontrarlos y/o no tenga permisos de escritura.
Recuerda que, aunque el programa tiene como propietario a root (a propósito, algo nada recomendable, por temas de seguridad), lo ejecuta el usuario del servidor web (httpd, apache2, www-data o cualquier otro nombre parecido).
Entonces, ese programa se ejecuta con ese propietario. Hay que ver si ese usuario tiene permiso para leer el archivo, y luego modificarlo. Lo normal es que el archivo esté puesto a nombre del usuario web, o al menos, al grupo. Y con permiso de escritura en él.
Se podría hacer algo así (no probado):
Using perl Syntax Highlighting
#!/usr/bin/perl
use CGI qw(:standard );
use CGI::Carp qw(fatalsToBrowser);
my $archivo = "/tmp/counter.txt"; # por seguridad, damos la ruta completa
my $contador = 0; # si el $archivo no existe, iniciamos el $contador a 0
eval { # lo ejecutamos en un entorno controlado:
open my $FILE, '<', $archivo; # si se produce un error, lo cazará eval,
$contador = 0+ <$FILE>; # y dejará el error en $@
close $FILE;
};
if ($@) {
die "ERROR en la lectura: $@\n";
}
$contador++;
print
header,
start_html('Prueba de contador'),
h1('Contador:'),
hr,
p($contador),
hr,
end_html,
;
eval {
open my $FILE, '>', $archivo) {
print $FILE $contador;
close $FILE;
};
if ($@) {
die "ERROR en la escritura: $@\n";
}
Coloreado en 0.007 segundos, usando
GeSHi 1.0.8.4
También podría ser... que tu perl NO esté en /usr/bin/... sino en otro sitio.