это онлайн-валидатор perl
Для проверки правильности синтаксиса вы можете попробовать perl -c filename
.Для очистки кода в формате, вы можете посмотреть PerlTidy .,Вам может не понадобиться vaidator.Вы можете сделать что-то самостоятельно.
ПЕРЕСЫЛКА СООБЩЕНИЙ ОБ ОШИБКАХ
По умолчанию сообщения об ошибках отправляются в STDERR.Большинство HTTPD-серверов направляют STDERR в журнал ошибок сервера.Некоторые приложения могут захотеть хранить личные журналы ошибок, отличные от журнала ошибок сервера, или они могут направлять сообщения об ошибках в STDOUT, чтобы их принимал браузер.
Для этого предусмотрена функция carpout()
.цель.Поскольку carpout()
по умолчанию не экспортируется, вы должны импортировать его явно, сказав
use CGI::Carp qw(carpout);
Функция carpout () требует один аргумент, который должен быть ссылкой на открытый дескриптор файла для записи ошибок.Он должен вызываться в блоке BEGIN в верхней части приложения CGI, чтобы ошибки компилятора были обнаружены.Пример:
BEGIN {
use CGI::Carp qw(carpout);
open(LOG, ">>/usr/local/cgi-logs/mycgi-log") or
die("Unable to open mycgi-log: $!\n");
carpout(LOG);
}
carpout()
на данный момент не обрабатывает блокировку файлов в журнале.Кроме того, обратите внимание, что carpout()
не работает с дескрипторами файлов в памяти, хотя патч будет приветствовать это.
Настоящий STDERR не закрыт - он перемещается в CGI :: Carp:: SAVEERR.Некоторые серверы при работе со скриптами CGI закрывают соединение с браузером, когда скрипт закрывает STDOUT и STDERR.CGI :: Carp :: SAVEERR предназначен для предотвращения преждевременного возникновения этого.
Вы можете передавать файловые дескрипторы в carpout () различными способами.«Правильным» способом может быть верхняя ссылка на файловый дескриптор GLOB:
carpout (* LOG);
также принимаются следующие синтаксисы:
carpout(LOG);
carpout(main::LOG);
carpout(main'LOG);
carpout(\LOG);
carpout(\'main::LOG');
... and so on
FileHandle и другие объекты также работают.
В ОШИБКЕ БРАУЗЕРА ВХОДЯТ ОШИБКИ PERL
Если вы хотите отправить в браузер фатальные ошибки (die, confess),попросить импортировать специальную подпрограмму "fatalsToBrowser":
use CGI::Carp qw(fatalsToBrowser);
die "Bad error here";
Фатальные ошибки теперь будут отображаться как в браузере, так и в журнале.CGI :: Carp организует отправку минимального HTTP-заголовка в браузер, так что будут видны даже ошибки, возникающие на ранней стадии компиляции.Неустранимые ошибки по-прежнему будут направлены только в файл журнала (если они не перенаправлены с помощью carpout).
* Обратите внимание, что fatalsToBrowser не работает с mod_perl версии 2.0 и выше. *
Изменениесообщение по умолчанию
По умолчанию за сообщением об ошибке программного обеспечения следует примечание для связи с веб-мастером по электронной почте с указанием времени и даты ошибки.Если это сообщение вам не нравится, вы можете изменить его, используя процедуру set_message()
.Это не импортируется по умолчанию;Вы должны импортировать его в строке use ():
use CGI::Carp qw(fatalsToBrowser set_message);
set_message("It's not a bug, it's a feature!");
Вы также можете передать ссылку на код для создания специального сообщения об ошибке.Во время выполнения ваш код будет вызываться с текстом сообщения об ошибке, из-за которого скрипт умер.Пример:
use CGI::Carp qw(fatalsToBrowser set_message);
BEGIN {
sub handle_errors {
my $msg = shift;
print "<h1>Oh gosh</h1>";
print "<p>Got an error: $msg</p>";
}
set_message(\&handle_errors);
}