Se o Apache for informado pela opção ExecCGI de que pode executar um cgi em um diretório, ele será. Normalmente, um script perl não precisa ser executável para o Apache rodá-lo, apenas legível. É possível que a versão 1.99 mais antiga do mod_perl implemente algo como o Apache 'XBitHack', mas esse comportamento agora não é padrão. Você está dizendo que o diretório que lhe deu um erro 403 foi 644? Ninguém além do root pode navegar em um diretório 644, portanto, isso é esperado. Mas se você está dizendo que o arquivo é 644, e o diretório é pelo menos 111, então o motivo para o erro 403 pode ser o 'XBitHack' ou algo mais difícil de determinar a partir das informações fornecidas.
O comportamento mais recente é mais seguro e flexível, porque geralmente é uma boa ideia minimizar as permissões de todos os objetos do sistema de arquivos, e scripts não executáveis localizados em um diretório ExecCGI são executáveis apenas pelo Apache. Se você não quer que eles sejam, não os coloque lá ou não defina a opção ExecCGI. Se por algum motivo você quiser que eles sejam também executáveis pelo shell, você pode definir o bit.