Проблема в линии
use lib "..\\PerlModules\\";
Измените его на полный путь к тем местам, где находятся модули Perl:
use lib "C:\\Perl\\PerlModules\\";
или что угодно.
Причина в том, что ваш сценарий CGI, запускаемый из командной строки в том же каталоге, в порядке, но когда он запускается с абсолютным путем сервером из другого каталога, каталог ..\\PerlModules\\
больше не является правильным местоположением модулей (потому что сейчас .. относится к каталогу сервера, а не к вашему скрипту). Когда он пытается загрузить модуль, он не может найти его и печатает сообщение об ошибке. Веб-сервер не может справиться с сообщением об ошибке, поэтому вы получите приведенное выше.
Если вы не хотите использовать абсолютный путь в вашем скрипте cgi, попробуйте использовать use lib
внутри блока BEGIN с модулем FindBin
.
Одной из проблем, которая устраняет подобные проблемы, является модуль CGI :: Carp и его опция "fatalsToBrowser":
use CGI::Carp 'fatalsToBrowser';
ловит ошибки и выбрасывает их в браузер. Это только для отладки.