П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 180074 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 78128 раз(а).

Учебник HTML.
Просмотров 75528 раз(а).

Руководство по PHP5.
Просмотров 46583 раз(а).

Хостинг через призму DNS.
Просмотров 53975 раз(а).

Подборка текстов стандартных документов.
Просмотров 46501 раз(а).

Учебник PHP - Самоучитель
Просмотров 52662 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 53256 раз(а).

Внешние атаки...
Просмотров 43067 раз(а).

Учебник PHP.
Просмотров 38634 раз(а).

SSI в примерах.
Просмотров 28582 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Глава 1: Введение.
1.5. Прогулка по стране Perl
1.5.11. Как предупредить пользователя, если он сбился с пути

Давайте посмотрим, как можно заставить систему посылать сообщение электронной почты всякий раз, когда пользователь указывает свое секретное слово неверно. Нам нужно модифицировать только подпрограмму good_word() (сказывается преимущество модульности языка Perl), потому что вся необходимая информация находится у нас там.

Почтовое сообщение будет послано вам в том случае, если вы вставите свой адрес электронной почты там, где в программе записано YOUR_ADDRESS_HERE. Все, что нам нужно для этого сделать, это непосредственно перед тем, как возвращать из подпрограммы 0, создать дескриптор файла, который фактически будет являться процессом (mail):

sub good_word {

  my($sornename,$someguess) = @; # перечислить параметры 

  $somename =~ s/\W.*//; # удалить все символы, стоящие после первого слова
  $somename =~ tr/A-Z/a-z/; # перевести все символы в нижний регистр 

  if ($somename eq "randal") { # не нужно угадывать 
    return 1; # возвращаемое значение — true

  } elsif (($words($somename} || "groucho") eq $someguess) {
    return 1; # возвращаемое значение — true

  } else {
    open (MAIL, "Imail YOUR_ADDRESS_HERE");
    print MAIL "bad news: $somename guessed $someguess\n";
    close (MAIL);
    return 0; # возвоашаемое значение — false
  }
}

первый новый оператор здесь — open, в начале второго аргумента которого стоит оператор канала (1). Он указывает, что мы открываем процесс, а не файл. Поскольку оператор канала находится перед именем команды, мы открываем процесс так, чтобы можно было осуществить в него запись. (Если поставить оператор канала в конец, а не в начало, то можно будет читать выходную информацию команды.)

Следующий оператор, print, выбирает для вывода не stdout*, а дескриптор файла, стоящий между ключевым словом print и подлежащими выводу на экран значениями. Это значит, что сообщение в конечном итоге станет входной информацией для команды mail .

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

Чтобы соблюсти все формальности, мы могли бы посылать не только ошибочный, но и правильный ответ, но тогда тот, кто заглядывает нам через плечо (или прячется в системе электронной почты), когда мы читаем сообщения, получил бы слишком много полезной информации.

Perl может также открывать дескрипторы файлов, вызывать команды с необходимыми аргументами, даже порождать копию текущей программы и выполнять две (или более) копии программы одновременно. Обратные кавычки (как в shell) дают возможность получать результаты работы команды как данные. Все это описывается в главе 14, так что читайте дальше.

* Говоря техническим языком — выбранный в текущий момент дескриптор файла. Об этом, однако, мы поговорим позже.

Назад | Вперед
Содержание (общее) | Содержание раздела | Содержание подраздела



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru