Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > Perl - начало изучения. |
Автор: Vldmir 15.7.2009, 14:29 | ||
Всем здарова! ![]()
А вот сведения об ошибках, выдаваемых интепретатором Perl: http://ipicture.ru/ Так как, пока нехватает опыта самостоятельно решить подобные задачи, обращаюсь за помощью для устранения представленных ошибок. Заранее благодарен! ![]() |
Автор: gcc 15.7.2009, 16:05 | ||||
если скрипт маленький, варнинги можно не включать |
Автор: Vldmir 15.7.2009, 17:36 |
Хорошо удалил ключ -w , но программа опять же выполняется некорректно: http://ipicture.ru/ Хотя введённое имя соответствует секретному слову. Похоже здесь уже прдупреждение выводит командная строка. ![]() |
Автор: DaemonSuw 15.7.2009, 17:47 |
open MAIL, "| mail YOUR_ADDRESS_HERE"; - ну вот эта штука не для винды) перенаправьте просто в файл хотя может и есть какие нибудь консольные дискриптовые отсыльщики, но у вас ясно они не стоят( |
Автор: Vldmir 15.7.2009, 18:16 |
А где можно почерпнуть информацию о файловых отсыльщиках для винды и об их установке. |
Автор: Itsys 15.7.2009, 20:27 |
Vldmir, ищи sendmail for windows |
Автор: Vldmir 15.7.2009, 21:36 |
Спасибо, будем действовать! ![]() |
Автор: DaemonSuw 15.7.2009, 21:47 | ||
Vldmir, да вы бы не мучались с администрирование винды, а писали бы просто в файл:
MAIL - это дескриптор файла... print MAIL '' - печать в этот дескриптор, то есть по сути в файл... close - закрытие файла и сохранение данных с mail в примере будет тоже самое только с помощью внешней утилиты mail, которая в качестве аргументов получает е-майл и тело письма, если я правильно понял пример... |
Автор: Vldmir 16.7.2009, 12:06 | ||
DaemonSuw, cпасибо за совет. В случае использования приведённого выше кода, ясно программа отправляет сообщение в файл при набранном неправильном секретном слове, или если срок со времени создания секретного слова превысил 7 дней. Но что касается отправки сообщения на адрес электронной почты при помощи SendMail, здесь похоже помимо установки самого SendMail, необходима установка веб-сервера. Да, и ещё вопросик при выполнении кода программы:
когда введено имя и соответствующее ему секретное слово, программа выводит опять тот же запрос: http://ipicture.ru/ и понятно посылает сообщение в файл, хотя время созданных файлов секретных слов не привышает 7 дней. Например, если ввести используемое по умолчанию для всех имён секретное слово "groucho" прграмма завершается удачно. |
Автор: Slauta 21.7.2009, 00:58 |
Я тож изучаю пэрл по этой книжке, там много неточностей, приходилось подгонять под винду либо пробовать под линукс, но на линуксе проктически 50% всех ошибок, теже что и на винде. Я так думаю, что книжка врод писалась 1998 году, а с тех пор много времени прошло, да и та самая винда изменилась (хотя наверн пэрл не был расчитан на 98 винду, а ток на линуксы). Так что эта книжка хорошэнько тренерует мозги... |
Автор: shamber 21.7.2009, 10:37 | ||
почему? |
Автор: Vldmir 21.7.2009, 20:33 |
shamber, поправлюсь, я хотел лишь упомянуть, что сервер можно использовать как один из вариантов проверки удачной отправки почты, применяя Perl-скрипт. Например, в дистрибутив Denver'а входит sendmail для проверки отправки почтовых сообщений. Но также не исключаю, что для выполнения подобной задачи можно применить ряд специальных модулей . |
Автор: KSURi 21.7.2009, 20:37 |
На самом деле не sendmail, а заглушка, которая пишет в файл. Во всяком случае, так было года два назад) |
Автор: Vldmir 21.7.2009, 20:46 |
Если я вас правильно понял, то принцип использования sendmail на Denver'е, аналогичен принципу отправки сообщения из Perl- скрипта в файл? |
Автор: shamber 21.7.2009, 22:41 |
да Добавлено через 38 секунд хотите посылать почту смотрите на smtp. |
Автор: amg 27.7.2009, 09:51 |
Vldmir, ошибки в скрипте -- скорее всего из-за не вполне корректного OCR сканированного текста (у Вас же электронный вариант книги?). Предупреждения (опция -w) отключать не следует, они сильно помогают искать ошибки. Например, первое предупреждение на использование неинициализированного $word означает, что в эти переменную из файла ничего не зачиталось. Надо разбираться, почему так, дальнейшая отладка без этого не имеет смысла. Следующее предупреждение об использовании слова там где должно быть число -- это явно ошибка OCR: фигурные скобки перепутаны с квадратными. По смыслу должно быть $words{$name} = $word;, т.е. не массив, а хэш. Соответственно, ниже $words{$somename}. Еще одна ошибка -- лишний пробел в chomp $ guess; По поводу почтовой программы в виндах -- оставьте это на потом, а пока просто замените фрагмент open MAIL, "| mail YOUR_ADDRESS_HERE"; print MAIL "bad news: $somename guessed $someguess\n"; close MAIL; на строку warn "bad news: $somename guessed $someguess\n"; Успехов! |