См. Также Как устранить неполадки в сценарии Perl CGI? .
Ваша проблема была связана с тем, что ваш скрипт не отправил соответствующие заголовки.
Действительный HTTP-ответ состоит из двух разделов: заголовки и тело.
Вы должны убедиться, что используете правильный модуль обработки CGI. CGI.pm является стандартом de facto . Тем не менее, в нем много исторического багажа, и CGI :: Simple обеспечивает более чистую альтернативу.
Используя один из этих модулей, ваш скрипт был бы:
#!/usr/bin/perl
use strict; use warnings;
use CGI::Simple;
my $cgi = CGI::Simple->new;
print $cgi->header, <<HTML;
<!DOCTYPE HTML>
<html>
<head><title>Test</title></head>
<body>
<h1>Perl CGI Script</h1>
<p>this is some text that should get displyed in browser</p>
</body>
</html>
HTML
Имейте в виду, что print не имеет проблем с несколькими аргументами. Нет смысла учиться программировать, как в 1999 году.