Bienvenido a los foros de Perl en Español, juan722.
Es muy posible que en el fichero de configuración del servidor web no esté indicado que /usr/lib/cgi-bin es un directorio que contiene programas ejecutables. Debería ser algo así:
Using text Syntax Highlighting
## CGI's
AddHandler cgi-script .cgi .sh .pl .ida
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
ScriptAlias /cgi/ /usr/lib/cgi-bin/
<Directory /usr/lib/cgi-bin/>
AllowOverride None
Options ExecCGI FollowSymLinks -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Que quiere decir:
* AddHandler: esto asocia una(s) determinada(s) extensiones de ficheros con un comportamiento. Así, cualquier fichero que acabe en .cgi será ejecutado con el controlador cgi-script. En teoría, se podría entonces colocar esos ficheros en cualquier directorio, pero hay otras reglas que lo suelen impedir
* ScriptAlias: indicamos que, cuando una petición HTTP contenga /cgi-bin/, se debe referir de forma condicional con el directorio /usr/lib/cgi-bin. Lo mismo para /cgi/
* Directory: Ahí es donde está lo que nos interesa: con
Options ExecCGI indicamos que en ese directorio se debe ejecutar, en lugar de entregar al usuario.
Más información, en la página de Apache.