Январь 29, 2006

Отладка CGI-скриптов на Perl (Часть 4)

Как же отлаживать на локальной машине скрипты, использующие, скажем, sendmail, если у Вас (под Windows) нет sendmail?

Наиболее простой способ - закомментировать то место скрипта, которое высылает письмо. Оно скорее всего в общем случае имеет вид:

open EMAIL,"|путь_к_sendmail список_получателей";
print EMAIL "....";
....
close EMAIL;

где в операторе open открывается sendmail, EMAIL - дескриптор файла; может быть любой. Таким образом, можно проверить работу скрипта без высылки сообщения по E-Mail, если оно является вспомогательным (скажем, в гостевых книгах, высылающих вебмастеру уведомление о новой записи).

Можно поступить и другим путем: вместо открытия sendmail в команде open записать открытие файла на запись. Ничего другого при этом менять не нужно.

В этом случае при "отсылке сообщения" создастся файл с этим письмом, и Вы сможете вручную проконтролировать его формат.

Кстати, поскольку E-Mail адрес имеет вид user@hostname, а символ @ в Perl- обозначение массива, то "прямая" запись такого адреса вызовет ошибку! Поэтому перед @ нужно ставить обратный слэш \. То есть адрес в строчке Perl должен иметь вид user\@hostname. То же самое относится и к другим зарезервированным символам, например, $.

Относительно команды date можно сказать, что в большинстве случаев ее может заменить функция perl

scalar localtime

которая возвращает строку с текущей датой/временем, например:

Sun Oct 22 16:11:42 2000

Такая замена вполне возможна, если полученное значение даты/времени не разбирается CGI-скриптом, а просто записывается в лог-файл (или используется "как есть" по-другому).

Таким образом, в большинстве случаев работу скрипта можно проверить даже при отсутствии необходимых ему программ, стандартных для UNIX.

Насчет ошибки связи с файлами следует упомянуть неверно установленные права доступа на вспомогательные файлы, используемые скриптом.

продолжение следует...

Часть 3

Часть 5

Разместил:

Автор: Андрей Черный

Ваш комментарий

Обсудить на форуме?

Подумайте, прежде чем высказать своё мнение. Постарайтесь сделать свой комментарий полезным для других. Не используйте ненормативную лексику. Пользователи, пишущие "от нечего делать" бессмысленные наборы символов, будут блокироваться навсегда.