Язык программирования Perl
Язык программирования Perl читать книгу онлайн
Курс знакомит с языком программирования Perl, с его принципами, основными возможностями и особенностями в объёме, достаточном, чтобы начать разрабатывать прикладные и системные задачи, включая программирование для сети Интернет.
Курс является достаточно подробным введением в язык программирования Perl. Описывается уникальная культура Perl и особенности, отличающие его от других языков программирования и во многом обусловившие его популярность. Рассматриваются основные средства программирования на языке Perl версии 5.8. Разбираются богатые возможности языка для создания самых разных приложений, а также особый стиль программирования на Perl. Курс ориентирован на студентов, начинающих программистов или разработчиков, применяющих другие языки и желающих писать прикладные или системные программы на Perl.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
my $socket = IO::Socket::INET->new( # создаем сокетType => SOCK_STREAM, # для потокового обменаProto => 'tcp', # по протоколу TCPPeerAddr => $server_host, # с удаленным адресомPeerPort => $server_port) # и портомor die "Ошибка соединения с $remote_host:$remote_port ([email protected])";# сообщение задаетсяmy $message = $ARGV[0] || # параметром программы"Проверка связи!"; # или умолчаниемprint $socket "$messagen"; # отправляем его иmy $answer = <$socket>; # принимаем ответprint "$answer"; # выводим ответclose $socket; # и закрываем сокетИз этого незатейливого примера можно сделать такой вывод: для согласованной работы клиент и сервер должны следовать установленным "правилам общения" во время сеанса обмена данными, так называемому протоколу прикладного уровня. В нашем случае правила сводятся к тому, что обмен идет по порту 5555, сервер ждет от клиента только одно сообщение, клиент ждет обязательного ответа от сервера, который завершает работу по получении сообщения, в котором содержится строка 'STOP'. Подробные соглашения описываются в конкретных протоколах сетевого обмена, например: HTTP (передача гипертекстовых документов), SMTP (отправка электронной почты), FTP (передача файлов). Описание подобных протоколов и других соглашений публикуются в виде предложений RFC (Request For Comment) - фактических международных стандартов, на которые ориентируются разработчики сетевого программного обеспечения.
Во Всемирной сети Интернет насчитывается огромное количество файловых серверов, где хранятся архивы программ, документация и другая информация. FTP (File Transfer Protocol) - это протокол, специально созданный для передачи файлов. Обмен файлами остается одной из постоянных задач сетевого программирования, которая легко решается средствами языка Perl. В поставке Perl имеется стандартный модуль Net::FTP, реализующий FTP-клиента, который позволяет весьма просто организовать обмен файлами с сервером по протоколу FTP - например, автоматизировать автоматическое обновление нужных файлов с сервера. Далее приводится программа, которая с помощью команд FTP загружает с сервера файл, если он имеет более позднее время изменения, чем его локальная копия:
use Net::FTP; # используем модуль работы с FTPmy $server = 'ftp.server.org'; # имя или адрес сервераmy $file = 'file.name'; # имя файлаmy $ftp = Net::FTP->new($server) # соединяемся с серверомor die "Ошибка соединения с $server:[email protected]";$ftp->login('ftp','ftp') # указываем имя и парольor die " Ошибка регистрации:", $ftp->message;$ftp->cwd("/pub") # переходим в каталогor die "Ошибка смены каталога:", $ftp->message;my $time_ftp = $ftp->mdtm($file) # время изменения на сервереor die;my $time_old = (stat($file))[9]; # время создания копииif ($time_ftp > $time_old) { # если файл на сервере новее,$ftp->binary; # то в двоичном режиме$ftp->get($file) # загружаем файлor die "Ошибка загрузки: ", $ftp->message;utime($time_ftp, $time_ftp, $file); # и меняем время файла}$ftp->quit; # заканчиваем сеанс связиПоскольку в классе Net::FTP реализованы остальные команды протокола FTP, с его помощью можно разрабатывать гораздо более сложные программы файлового обмена. Кроме этого класса, в архивах CPAN можно найти много других модулей для обмена файлами с FTP-серверами.
Электронная почта (e-mail) была и остается одним из самых популярных сетевых сервисов. Электронная почта базируется на асинхронной доставке почтового сообщения (message) с одного почтового сервера на другой с помощью протокола SMTP (Simple Mail Transfer Protocol). Почтовые сообщения каждого пользователя хранятся на сервере в отдельном почтовом ящике (mail-box). Клиентская почтовая программа (Mail User Agent, MUA) забирает почту с сервера с помощью одной из версий протокола POP (Post-Office Protocol) или предоставляет пользователю непосредственный доступ к ящику на почтовом сервере с помощью протокола IMAP (Internet Mail Access Protocol).
Естественно, что в Perl имеется множество средств работы с электронной почтой. По электронной почте можно организовать автоматическое уведомление системных администраторов или пользователей о наступлении определенного события. С помощью сообщений электронной почты организуется регулярная автоматическая рассылка информации, например, счетов клиентам. При работе с почтой можно воспользоваться стандартными модулями - Net::SMTP для отправки сообщений и Net::POP3 для их получения. Приведем пример простой программы, отправляющей сообщение электронной почты:
use Net::SMTP; # используем класс для отправки e-mailmy $mail_server = 'shokhirev.com'; # почтовый серверmy $to_user = '[email protected]'; # получательmy $from_user = '[email protected]'; # отправитель$smtp = Net::SMTP->new(Host=>$mail_server);# соединяюсь$smtp->mail($from_user); # пишу$smtp->to($to_user); # получателю$smtp->data(); # письмо$smtp->datasend("To: $to_usern"); #$smtp->datasend("Subject: Lectures on Perl 5n");$smtp->datasend("n");$smtp->datasend("Сообщаем о публикации на intuit.run");$smtp->datasend("курса лекций по Perl 5n");$smtp->dataend(); # заканчиваю$smtp->quit; # отсоединяюсь
