Язык программирования Perl
вернуться

Шохирев Михаил Васильевич

Шрифт:

foreach my $numbers (keys %$numbers) {# по номеру

my $message = $pop->get($numbers); # получаю письмо

print @$message; # печатаю его

$pop->delete($numbers); # удаляю с сервера

}

}

$pop->quit; # отсоединяюсь

На серверах CPAN есть множество программ для работы с электронной почтой, включая серверы. На Perl написана свободно распространяемая почтовая система с web-интерфейсом Open WebMail (openwebmail.org). На нем же написана и одна из самых известных и эффективных серверных систем фильтрации спама - SpamAssassin.

Системы мгновенного обмена сообщениями (instant messaging), иногда также называемые Интернет-пейджерами, получили огромное распространение: миллионы людей ежедневно общаются с помощью ICQ, Jabber, AOL Instant Messenger или Yahoo!Messenger. В архивах на сайте CPAN можно найти Perl-модули для работы со всеми этими системами. Хотя этот обмен сообщениями ориентирован на взаимодействие людей, его можно использовать для программного извещения пользователя о каком-либо событии. Для примера напишем программу, отправляющую сообщение с использованием открытого протокола мгновенного обмена сообщениями XMPP/Jabber (дополнительный модуль Net::Jabber нужно установить из архива CPAN). В примере после соединения с Jabber-сервером отправляется сообщение пользователю, а после получения от него ответа работа завершается:

use Net::Jabber; # подключаем класс работы с Jabber

use utf8; # в Jabber используется UTF-8

my $server = 'jabber.shadrinsk-city.ru'; # сервер

my $port = 5222; # порт

my $username = 'perl'; # отправитель

my $password = 'password'; # его пароль

my $resource = 'jud'; # ресурс

my $to_user = 'mshock@jabber.ru'; # получатель

my $client = new Net::Jabber::Client; # создаем клиента

$client->SetCallBacks( # указываем обработчики событий:

onconnect => \&on_connect, # при подключении

onauth => \&on_auth, # при регистрации

message => \&on_message, # при получении сообщения

);

$client->Execute( # соединяемся с сервером

hostname=>$server, port=>$port,

username=>$username, password=>$password,

resource=>$resource, register=>1,

connectsleep=>0, connectattempts=>1,

);

# завершение программы произойдет в on_message

sub on_connect { # выполнится при подключении к серверу

print "Подключен к $server:$port\n";

}

sub on_auth { # выполнится при регистрации на сервере

print "Зарегистрирован как $username\n";

$client->MessageSend( # ОТПРАВЛЯЕМ СООБЩЕНИЕ

to=> $to_user. '/' .$resource,

subject=>'сообщение от Perl',

body=>'Привет, Jabber!'

);

}

sub on_message { # выполнится при получении сообщения

my $sid = shift; # извлекаем номер и текст

my $message = shift; # ответа и выводим его:

print "Тема:", $message->GetSubject, "\n";

print "Сообщение:", $message->GetBody, "\n";

$client->Disconnect; # отключаемся от сервера

exit(0); # и завершаем работу

}

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

Есть примеры использования Perl для разработки шлюзов между IP-сетями и беспроводными сетями. На Perl написан свободно распространяемый пейджинговый шлюз Sendpage (www.sendpage.org). Класс Net::SNPP занимается отправкой сообщений на пейджер по протоколу SNPP (Simple Network Paging Protocol), а модуль Net::SMS служит для работы со службой SMS-сообщений для клиентов GSM-телефонии. Теперь мало кого удивляет, что вскоре после появления очередной новой технологии передачи данных на CPAN выкладываются Perl-модули для работы с ней.

  • Читать дальше
  • 1
  • ...
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • ...

Private-Bookers - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • help@private-bookers.win