Январь 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 |
Разместил:
Автор: Андрей Черный