Você não explicou onde seu arquivo index.pl reside na hierarquia de arquivos, mas eu acho que você o possui no DocumentRoot.
O problema é que seu diretório DocumentRoot é tradicionalmente usado para servir documentos estáticos. Por motivos de segurança, os arquivos na hierarquia DocumentRoot não são processados (isto é, executados) - e os arquivos no diretório ScriptAlias nunca são exibidos estaticamente.
Você precisa separar seu conteúdo executável (perl, php, sh) do seu conteúdo veiculado estaticamente (arquivos html, imagens, css, js) - para que o servidor da Web saiba que os arquivos estão no diretório 'this' e abaixo de don ' t precisa ser processado (como imagens) e os arquivos nesse diretório.
Para este fim:
- Crie um arquivo index.html com meta headers que redirecionam para /cgi-bin/index.pl e coloque o index.html no DocumentRoot
- Mova seu index.pl para um diretório apontado por ScriptAlias (com uma seção Diretório correspondente - que possui o sinalizador + ExecCGI). Assegure-se de que o index.pl seja executável e garanta que sua linha shebang aponte para um perl resolvível.
A saída html do seu index.pl ainda pode referenciar imagens etc da raiz (por exemplo, colocar uma pasta de imagens na pasta raiz do documento e imagens de referência do html como /images/logo.png), e os scripts podem ser vinculados a (via submissão do formulário ou href) do seu conteúdo html da pasta de script (por exemplo, como /cgi-bin/processform.pl)