Введение в мир Perl. Типы данных в perl

Бытовая техника 23.06.2019

Язык Perl был создан в 1987 году американским программистом с лингвистическим образованием - Ларри Уоллом. Спустя год после создания, в 1988 году у языка появилась поддержка регулярных выражений, а в 1989 - обработка потока данных, представленных в двоичной форме. Работа над языком Perl не прекращается. В последних версиях Perl появилась поддержка сложных типов данных и объектная модель.

Особенности языка Perl.

Структура Perl схожа с языком Си. Некоторые свойства языка Perl заимствованы из языков командных оболочек UNIX – систем.

Отличительная черта языка – возможность написания программ из одной строки. Они используются непосредственно в строке вызова командного интерпретатора.

Преимущества.

Преимущества языка Perl:

  • встроенные средства для работы со сложными структурами;
  • свободный синтаксис (одна и та же задача может решаться разными способами);
  • много готовых библиотек – модулей;
  • поддержка работы с регулярными выражениями;
  • простая обработка больших объемов данных;
  • возможность программирования объектно-ориентированным или «функциональным» стилем;
  • кросс-платформенность.

Недостатки.

Для решения некоторых задач часть преимуществ языка Perl превращаются в недостатки. Большое количество модулей затрудняет их поиск, что не нравится программистам, которым из всего многообразия нужны лишь пара конкретных.

В языке сохраняются ранее популярные, но сейчас уже устаревшие подходы. Тем не менее, часть из них может хорошо подойти для специфических программных задач.

Виртуальный хостинг сайтов для популярных CMS:

Для чего используется?

Системная поддержка Windows и UNIX.

Язык Perl популярен среди системных администраторов UNIX и Windows. Его особенности позволяют не привлекать другие программные средства к решению административных задач. С помощью Perl реализуется управление компьютерами из командной строки, контроль одной программы над другой и другие функции.

Электронная почта.

Perl – подходящее средство автоматизации обработки электронной почты. С его помощью настраивают фильтрацию сообщений по заданным параметрам, организуют рассылку, и решают множество других задач.

CGU – сценарии.

Применение CGU – сценариев обусловлено необходимостью обработки данных, введенных пользователем на html–странице. На сервере запускается специальная программа, которая формирует ответ пользователю после ввода данных. Язык Perl получил распространение в этой сфере из-за простоты реализации требуемых функций.

Поддержка Web-узлов.

Web-узел представляет собой хранилище текстовой информации в формате html-страниц. Язык Perl разработан с учетом необходимости обработки больших объемов текстовых данных, поэтому широко применяется в этой сфере.

Данная статья написана для людей, которым в силу непреодолимых обстоятельств приспичило срочно изучить Перл. Для меня таким обстоятельством стало то, что мой компьютер стал WEB-сервером, а я, соответственно, WEB-мастером. Учиться принято на чужих ошибках и опыте, поэтому предлагаю Вашему вниманию свой опыт изучения Перла.

Сразу нужно пояснить, для кого это все написано. Если Ваш сервер работает на платформе UNIX, то это я должен читать Вашу статью. У меня же установлен Windows NT workstation 4.0 (RUS) плюс Service Pack 3. Когда пришло время сделать из компьютера WEB-сервер, я было кинулся ко встроенным Службам узла WEB, но быстро понял, что это мне не нравится (почему?). И тут один добрый человек посоветовал поставить Xitami WEB Server от iMatix Corporation (), который и стоит по сей день.

Что касается самого Перла, то здесь несколько сложнее. Покопавшись по различным Перловым серверам (www.perl.org , www.perl.com) я узнал, что версий Перла настолько много, что выбрать что-нибудь конкретное довольно сложно. При этом каких-нибудь вразумительных рекомендаций по поводу выбора той или иной версии нигде нет. Перепробовав почти все версии для Windows, я остановил свой выбор на Active Perl ().

Человеку, избалованному всякими Виндовозами и Дельфями, писать программы на Перл довольно непривычно, поэтому настоятельно рекомендую сразу установить Perl Builder. Взять его можно на www.solutionsoft.com. Там лежала тридцатидневная Демо версия.

Ну, думаю, пора переходить непосредственно к делу. В общем случае, скрипт на Перл, как и любая другая программа, работает так:

  1. получает данные
  2. обрабатывает данные
  3. выдает результаты

Передать данные скрипту можно двумя методами - GET и POST. Разница между ними в том, что при использовании GET данные постоянно болтаются в строке адреса браузера, напимер:

Httр://treagraf.tasur.edu.ru/cgi-bin/price.pl?Category=POWER&Description=varta

В этом случае скрипт B_price.pl берет данные в переменной окружения QUERY-STRING.

$data=$ENV{"QUERY_STRING"};

При использовании метода POST данные передаются на стандартный вход скрипта. Длинна блока данных берется в переменной CONTENT_LENGTH:

Read(STDIN,$data,$ENV{"CONTENT_LENGTH"});

Теперь эти данные нужно перевести в удобоваримый вид, поскольку они закодированы.

Стандартным соглашением служит замена пробелов знаками плюс и затем кодировка оставшихся недопустимых символов с помощью ASCII-кодов в шестнадцатиричной форме, перед которыми ставится знак (%). Пример:

Http://treagraf.tasur.edu.ru/cgi-bin/B_price.pl\ ?Category=%C2%E8%E4%E5%EE&Description=%E0%E1%E2%E3

Это значит:

Http://treagraf.tasur.edu.ru/cgi-bin/B_price.pl?\ Category=Видео&Description=абвг

Декодировать строку запросов в первый раз лучше самому. На вопрос "а как?" есть множество ответов, переписывать которые нет смысла. Приведу лишь короткий пример:

Заменяем знаки (+) на пробелы

$query = ~ s/\+/ /g;

Потом заменяем все сочетания знака (%), после которого следуют шестнадцатиричные цифры, на соответствующий символ ASCII

$query =~ s/%({2})/pack("C", hex($1))/eg;

Я пользуюсь тем, что предлагает Perl Builder:

#! E:\perl5\bin\perl &GetFormInput; # вызов подпрограммы получения данных $Category = $field{"Category"}; # получаем данные из поля Category $Description = $field{"Description"}; # получаем данные из поля Description $Page = $field{"Page"}; # получаем данные из поля Page

В конце скрипта помещаем подпрограмму "прозрачного" чтения данных.

Sub GetFormInput { (*fval) = @_ if @_ ; local ($buf); if ($ENV{"REQUEST_METHOD"} eq "POST") { read(STDIN,$buf,$ENV{"CONTENT_LENGTH"}); } else { $buf=$ENV{"QUERY_STRING"}; } if ($buf eq "") {return 0;} else { @fval=split(/&/,$buf); foreach $i (0 .. $#fval){ ($name,$val)=split (/=/,$fval[$i],2); $val=~tr/+/ /; $val=~ s/%(..)/pack("c",hex($1))/ge; $name=~tr/+/ /; $name=~ s/%(..)/pack("c",hex($1))/ge; if (!defined($field{$name})) { $field{$name}=$val; } else { $field{$name} .= ",$val"; #if you want multi-selects to goto into an array change to: #$field{$name} .= "\0$val"; } } } return 1; }

Второй этап работы скрипта - обработка данных - полностью на Ваше усмотрение. Проверяйте полученные данные на правильность, пишите их в файл, делайте что хотите.

И, наконец, Вам нужно выдать какие-то результаты броузеру клиента, причем так, чтобы броузер правильно их отобразил. То есть, выдавать результаты нужно в HTML. Это делается просто: (тоже можно по-разному)

Print "Content-type: text/html", "/n/n"; #обязательная строка print "

В поле Category Вы ввели: ", $Category, "

Все это касается скриптов, получающих данные из формы на странице HTML. При этом страница с формой - отдельно, скрипт - отдельно. Можно сделать красивее и удобнее: объединить страницу и скрипт в единое целое. Для этого скрипт пишется по схеме:

  1. При первом запуске скрипт рисует HTML страницу с формой и ссылкой в тэге ACTION на самого себя. Первый запуск определяется по отсутствию входных данных.
  2. Если входные данные есть, то получаем их, обрабатываем и выдаем результаты.

#! E:\perl5\bin\perl if (($ENV{"QUERY_STRING"} eq "") or ($ENV{CONTENT_LENGTH}=0)) { # генерируем страницу с формой } else {# получаем данные, обрабатываем и выдаем результат}

Гостевая книга

Общий алгоритм работы гостевой книги таков:

1. Если посетитель хочет сделать запись в книгу, то
1.1 Получаем данные
1.2 Записываем их в файл или в базу данных
1.3 Говорим спасибо на HTML и предлагаем почитать другие записи
2. Если посетитель хочет почитать записи в книге, то
2.1 Читаем записи из файла или из базы данных
2.2 Выводим их красиво в HTML

Для удобства восприятия я оформил пункты 1 и 2 отдельными скриптами add_guestbook.pl и read_guestbook.pl соответственно. Сообщения гостевой книги хранятся в текстовом файле построчно, т.е. на каждую запись - строка. Так сделано для удобства чтения этого файла. Пример одной записи:

Sat Dec 5 13:31:20 1998&Наташа&студентка&Good&Для начала хорошо. Успехов на данном поприще Вам, Александр!&нету@пока&194.226.60.34

Вот описание полей рассматриваемой гостевой книги.

  • Name - имя, фамилия, отчество, кличка - на усмотрение посетителя
  • Work - профессия, род занятий
  • RadioButton - три кнопки: понравилось (Good), не понравилось (Bad), пофигу (Different)
  • Text - text box комментариев и примечаний
  • Email - обратный адрес

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

Perl был создан в 1986 году как инструмент для администрирования и конфигурирования системных ресурсов сети, состоящей из Unix-компьютеров. Он сочетает в себе лучшие чертыC,shell,sedиawk, поэтому для тех, кто знаком с ними, изучение Perl-а не представляет особого труда. Cинтаксис выражений Perl-а близок к синтаксисуC. В отличие от большинства утилит ОСUNIXPerl не ставит ограничений на объем обрабатываемых данных и если хватает ресурсов, то весь файл обрабатывается как одна строка. Рекурсия может быть произвольной глубины. Хотя Perl приспособлен для сканирования текстовых файлов, он может обрабатывать так же двоичные данные и создавать.dbm файлы, подобные ассоциативным массивам. Perl позволяет использовать регулярные выражения, создавать объекты, вставлять в программу наСилиC++куски кода на Perl-е, а также позволяет осуществлять доступ к базам данных.

Язык Perl был создан для повышения эффективности обработки текстовых документов. Он ориентирован на обработку строк. В настоящее время язык получил большое распространение как инструмент создания исполняемых модулей WWW-сервера. Существующие пакеты расширения обеспечивают доступ к SQL-серверам непосредственно из Perl-программы. Это позволяет использовать его для решения всех задач, возникающих при обеспечении WWW-доступа к базам данных. Perl эффективен также при обработке произвольных структур данных: существующих отчетов, списков, карточек в электронном виде.

Хотя CGI-приложения можно писать практически на любом языке,PerlиCGI-программирование стали синонимами для многих програм­мистов. Как сказал Хасан Шрейдер (HassanShroeder), первый вебмастерSun, «Perl- это артерия Интернета».Perl- самый широко исполь­зуемый язык дляCGI-программирования, и для этого есть много веских причин:

Perlлегко выучить: его синтаксис напоминает другие языки (например С), потому что он «многое прощает», - при ошибке выда­ется подробное сообщение, помогающее быстро локализовать про­блему.

Perlспособствует быстрой разработке, так как это интерпретируе­мый язык; исходный код не надо компилировать перед запуском.

Perlдоступен на многих платформах с минимальными измене­ниями.

Perlсодержит очень мощные функции для обработки строк со встро­енной в язык поддержкой поиска и замены по регулярным выраже­ниям.

Perlобрабатывает двоичные данные так же легко, как и текст.

Perlне требует четкого разделения на типы: числа, строки и логичес­кие выражения являются обычными скалярами.

Perlвзаимодействует с внешними приложениями очень просто и обеспечивает собственные функции для работы с файловыми систе­мами.

Для Perlесть много свободно доступных модулей отCPAN, начиная с модулей для создания динамической графики до интерфейсов с Ин­тернет-серверами и системами управления базами данных. За под­робной информацией поCPANобратитесь к приложению В.

Perlдействительно очень быстрый: считывая исходный файл, он тут же компилирует его в низкоуровневый код, который потом исполняет. Обычно компиляция и исполнение вPerlне воспринимаются как от­дельные шаги, поскольку выполняются вместе:Perlзапускается, чита­ет исходный файл, компилирует его, запускает и затем завершает рабо­ту. Этот процесс повторяется каждый раз, когда запускается сценарийPerl, в том числеCGI-сценарии. ПосколькуPerlтак эффективен, этот процесс происходит достаточно быстро, чтобы обрабатывать все запро­сы не на самых загруженных серверах. Однако следует обратить внимание, что в систе­махWindowsэто гораздо менее эффективно из-за необходимости созда­ния новых процессов.

РНР изобретен Расмусом Лердорфом в конце 1994 года. Первая вер­сия выпущена в 1995 году под именем «Инструментарий Персональ­ных Домашних Страниц», затем она была переработана и названа PHP/FI Version 2 (FI - модуль обработки данных для форм). Так­же была добавлена поддержка баз данных mSQL. С этого момента в разработке стали принимать участие добровольцы.

Статистика используемости РНР приблизительна, но, согласно ис­следованию, проведенному Netcraft, в начале 2001 года РНР исполь­зовался на более чем 5 300 000 сайтах по всему миру. Для сравне­ния: в это время число IIS серверов было примерно таким же (5 млн). Разработка интерпретатора РНР приняла форму организованного командного процесса, ядро интерпретатора разрабатывает компания Zend.com. При этом РНР распространяется свободно: его последнюю версию можно загрузить с сайта PHP.net. Модули РНР поставляют­ся в комплекте с сервером Apache, в комплектах систем Linux.

Изначально аббревиатура РНР означалаPreprocessor of Home Pages - препроцессор домашних страниц . Это язык внедряемых в HTML-страницы сценариев, исполняемых на сервере. По большей части его синтаксис заимствован из таких языков, как С, Perl, Java, и при этом добавлена масса возможностей, которых этим языкам недостает. Про­ще говоря, синтаксис РНР - это разумная альтернатива и строго­сти С, и «беспредельности» Perl.

РНР наделен практически полным набором функциональности, о ко­торой (до появления РНР) мог только мечтать web-программист. Его цель - позволить максимально быстро создавать динамически гене­рируемые web-страницы. С полным основанием можно заявить, что изучение и использование РНР будет выгодно как начинающим, так и профессиональным программистам.

Основными конкурентами РНР являются технологии JSP (J ava Server Pages и Java Scriptlets), ASP (Active Server Pages), Perl, SSI (Server Side Includes), Cold Fusion Server Pages.

Рассмотрим те недостатки, которые присущи указанным технологиям. JSP - достаточно слож­ный для изучения и использования язык. ASP , основанный на син­таксисе VBScript (Visual Basic), имеет всего несколько десятков соб­ственных функций и поэтому вынужден использовать СОМ-объекты; кроме того, он ориентирован исключительно на работу под Windows. Perl - язык головоломный, и его вольности затрудняют его понима­ние. SSI позволяет всего лишь компоновать HTML-страницу из не­скольких файлов. CF - коммерческий продукт, что является его ос­новным недостатком.

Основные достоинства РНР :

    бесплатен; постоянно совершенству­ется; работает на UNIX и Windows платформах;

    допускает работу с большинством СУБД;

    имеет широкий набор функций (более 3 тыс.);

    допускает объектно-ориентированное программирование;

    способен использовать протоколы HTTP, FTP, ШАР, SNMP, NNTP, РОРЗ, net sockets и другие;

    позволяет выполнять все операции, что и пере­численные его конкуренты, и даже работать с файлами графики. Можно также запускать РНР-скрипты как интерпретируемые файлы и компилировать исполняемые приложения (в том числе с под­держкой графического интерфейса GTK).

Если вы обнаружите, что РНР не способен на что-то (или работает не так, как вам хотелось бы), никто не будет препятствовать вам вно­сить в исходный код РНР (написанный на С) желаемые изменения. РНР является программным продуктом с открытым исходным кодом, и внесение в него улучшений и дополнений путем создания собст­венных модулей расширения всегда приветствуется.

Появился в 1987 году.

Этот язык программирования богат возможностями по работе с текстом, что определяет основную область его применения - манипуляции с текстом, в частности .

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

Perl - это единственный язык, программы на котором выглядят одинаково до и после RSA-шифрования.

На момент написания этого материала актуальной версией интерпретатора является 5.22.0 . Perl 6 готовится к релизу в 2015 году, но еще недостаточно документирован.

Язык программирования Perl крайне не рекомендуется брать в качестве языка для знакомства с программированием. Если вы абсолютный новичок - лучше начните с чего-нибудь менее губительного для вашего неокрепшего сознания. Серьезно, вот что говорил об этом языке Йон Риббенс:

PHP - это маленькое зло, созданное некомпетентными новичками, в то время как Perl - это большое и коварное зло, созданное умелыми, но извращёнными профессионалами.

К слову сказать, с PHP начинать тоже не стоит. А теперь ближе к делу.

Среда исполнения

На данный момент Perl официально поддерживается тремя ведущими платформами: Mac OS X, Unix и Windows. На первых двух из них среда исполнения Perl является предустановленной, и ее версию можно узнать через команду perl -v (свежую версию можно скачать ), а для операционных систем семейства Windows интерпретатор Perl доступен для скачивания на этой странице . Рекомендуется выбирать ActivePerl (дистрибутив от ActiveState) как самый распространенный.

Интегрированная среда разработки (IDE)

Perl, к сожалению, не очень популярен среди разработчиков сред разработки, поэтому на выбор вам предоставлено лишь небольшое количество специализированных инструментов.

Padre, the Perl IDE

Мультиплатформенная легковесная среда разработки, созданная специально для Perl и удобная для новичков. Помимо традиционных подсветки синтаксиса и автодополнения, имеет также встроенные инструменты рефакторинга. Кстати, Padre сама написана на Perl 5.

Текстовые редакторы

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

  • KomodoEdit - урезанная версия коммерческой среды разработки Komodo IDE, разрабатываемая ActiveState (той самой, которая поддерживает дистрибутив ActivePerl), располагает функциями автодополнения, подсветки синтаксиса, множественных курсоров и подсказок из документации;
  • Vim - текстовый редактор, интерфейс которого может оказаться непривычным для Windows-пользователя; поддерживает подсветку синтаксиса;
  • Sublime Text - один из самых инструментов редактирования исходного кода с подсветкой синтаксиса, автодополнением и т.п., функционал которого расширяется множеством существующих плагинов;
  • Notepad++ - легковесный текстовый редактор, отличающийся наиболее корректной, после KomodoEdit, подсветкой синтаксиса; функционал может быть расширен плагинами, однако специально для Perl их существует довольно мало.

CodeGround

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

Первый «Привет, мир!» на Perl

Традиционно предлагаем начать знакомство с новым языком со всем хорошо известной программы:

Print "Hello World\n";

Сохраните эту строку в файле hello.pl и запустите только что созданную вами программу командой:

Perl hello.pl

Однако прежде убедитесь, что исполняемые файлы Perl есть среди ваших переменных среды (переменных окружения), а также в том, что вы вызывается perl из папки с исходным файлом hello.pl . В случае успеха, вы увидите ожидаемое «Hello, world!»

Поздравляем, вы начали писать на Perl!

А дальше - в путь …

Отличное англоязычное руководство по языку программирования Perl для быстрого старта вы можете найти на сайте tutorialspoint.com . Помимо этого, существует официальный обучающий ресурс -

Не слишком красивое, но очень выносливое животное, способное выполнять тяжёлую работу.

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

Perl также знаменит огромной коллекцией дополнительных модулей http://www.cpan.org(англ.)

Интересен текст на Perl, печатающий простые числа :

Perl -wle "(1 x $_) !~ /^(11+)\1+$/ && print while ++ $_"

Еще один также впечатляющий своей краткостью пример, имеющий к тому же практическую пользу. Печатаются только уникальные строки файла file.

Perl -ne "$s{$_}++ || print" file

В этих примерах Perl напоминает своей краткостью и непонятностью с первого взгляда язык .

Перл унаследовал много свойств от языков Си , shell script , awk .

Сегодня основной для разработчиков является пятая версия языка Perl, однако (на некоторых веб-серверах) продолжают использоваться программы (скрипты), написанные на предыдущей - четвёртой - версии (из-за частичной обратной несовместимости). Фактически стандарт языка определяется реализацией интерпретатора .

Perl - далеко не единственный язык, дающий богатые возможности в обработке текста. Языки программирования РЕФАЛ , Icon и Снобол предоставляют возможность использовать более полно метод программирования «сопоставления с образцом», частным случаем которого и являются регулярные выражения.

Существует также полноценный

Синтаксис языка Perl

Синтаксис Perl имеет много общего с синтаксисом языков Си , Awk , shell.

Первая строка исходного кода может начинаться с «#!/Путь/к/Perl [-ключи]» - что указывает системе путь к интерпретатору Perl для выполнения программы в UNIX системах и выполнения их на веб-сервере .

Пример программы

Print 1 , 0 x 100 ;

Типы данных

Основные типы данных: скаляр, массив, хеш-таблица , функция, файловый дескриптор . Переменные разных типов отличаются знаком, который стоит перед именем переменной.

$foo ; # скаляр или указатель @foo ; # массив %foo ; # хеш-таблица &foo; # функция FOO; # дескриптор ввода-вывода

  • Скалярные переменные используются для хранения одиночных значений. Они могут содержать числа, строки и ссылки на другие объекты . Перед именем скалярной переменной необходимо ставить знак доллара "$". Тип скалярной переменной не фиксирован (в отличие от, например, языка Си) и определяется динамически в зависимости от контекста. Например,

$x = 10 ; # число $y = $x + 1 ; # используем $x как число… $z = $x . "string" ; # … а теперь - как строку $ref = \$x ; # $ref является указателем на $x $$ref = 0 ; # $x содержит значение 0

  • Массив является упорядоченным списком скаляров. Каждый элемент массива имеет порядковый индекс, с помощью которого к нему можно получить доступ. Нумерация элементов начинается с нуля, то есть первый элемент списка имеет индекс 0. Перед именем переменной-массива необходимо ставить знак "@", а для доступа к определенному элементу массива рекомендуется ставить знак "$", так как определенный элемент массива является скаляром. Многомерные массивы можно смоделировать, помещая в список ссылки на другие списки.

@array = (1 ,2 ,3 ,4 ) ; # записали в массив @array четыре элемента print $array [ 2 ] ; # напечатать третий элемент print @array [ 2 ] ; # также напечатать третий элемент, но рекомендуется использовать предыдущую версию print @array [ 2 ,3 ] ; # напечатать третий и четвертый элемент

  • Хеш-таблица представляет собой ассоциативный массив , позволяющий ассоциировать строку (называемую ключ) со скаляром (значение). Строка называется ключом, а скаляр в хеш-таблице значением. Перед именем переменной-списка необходимо ставить знак процента "%", а для доступа к определенному элементу массива рекомендуется ставить знак "$".

Физически Хеш-таблица представляет собой массив, где в нечетных позициях находятся ключи, а на четных - значения.

%hash = ( "cat" => "kitten" , "dog" => "puppy" , "cow" => "calf" ) ; print $hash { "cat" } ; #Напечатает kitten print %hash { "cat" } ; #Также напечатает kitten, но рекомендуется использовать предыдущую версию print join ("-" , keys %hash ) ; # Вывод всех ключей. Напечатает cat-dog-cow print join ("-" , values %hash ) ; # Вывод всех значений. Напечатает kitten-puppy-calf print join ("-" , %hash ) ; #Напечатает cat-kitten-cow-calf-dog-puppy

  • Функция представляет собой фрагмент исполняемого кода. Функция всегда возвращает какое-либо значение либо UNDEF. Если возвращаемое значение явно не указано оператором return, возвращается последнее вычисленное значение.

Sub printTwo{ print 2 ; } sub three{ 3 ; } $s = \&three; print &$s ; #Напечатает 3 $s = \&printTwo; print &$s ; #Напечатает 21. `2` в коде функции, а `1` как значение, возвращаемое функцией printTwo print &printTwo #То же самое

  • Константа

Константа представляет собой неизменяемое значение. Константа не является встроенным типом языка и эмулируется при помощи функций. Использование:

Use constant MY => 2 ; print MY;

*MY = \2 ; print $MY ;

  • Файловый дескриптор

Представляет собой указатель на файл, устройство или PIPE канал, открытые для записи, чтения или для записи и чтения

Использование:

$s = ; #Читаем одну строку из дескриптора STDIN (стандартный поток ввода); скалярный контекст. @values = ; #Читаем все строчки из некоторого открытого и связанного с дескриптором FILE файла; списковый контекст. print STDOUT $s ; #Печатаем в STDOUT (стандартный поток вывода)

Регулярные выражения

В Perl встроена мощная поддержка регулярных выражений . Благодаря этому Perl очень эффективен для обработки текстов. Бо́льшая часть работы с регулярными выражениями производится при помощи операторов =~ , m// и s/// .

Оператор m// используется для проверки на совпадение. В простейшем случае результат выражения $x =~ m/abc/ будет истинным, если и только если строка $x будет соответствовать регулярному выражению abc . Например:

Поиск и замена выполняются при помощи оператора s/// . Конструкция $x =~ s/abc/def/; заменит первое вхождение регулярного выражения abc на строку def .

Пример Значение
$x =~ s/abc/def/g; Все вхождения (на что указывает флаг /g - global) подстроки «abc» в $x будут заменены на «def».
$x =~ s/a(.{1,3})c/!$1!/; Первое вхождение в $x буквы «a», затем от одного до трех любых символов, и затем буквы «c» будет заменено на эти символы между «a» и «c», окружённые «!». Например, «syntactic» станет «synt!cti!».
$x =~ s{^p(erl|ugs)}{"P" . lc $1}ieg; Здесь показан пример использования модификатора /e , указывающего на то, что вместо строки замены будет написан код, результат выполнения которого надо использовать. Все вхождения «perl» или «pugs» в любом регистре будут заменены на «Perl» и «Pugs», соответственно.

Поэзия в Perl

На Perl можно даже писать стихотворения. Одно из таких стихотворений под названием «Black Perl» («Чёрная жемчужина» или «Чёрный перл») было упомянуто Ларри Уоллом в первоапрельском письме в

BEFOREHEAD: close door, each window & exit ; wait until time . open spellbook, study , read (scan, select , tell us) ; write it, print the hex whole each watches, reverse its length , write again; kill spiders, pop them, chop , split , kill them. unlink arms, shift , wait & listen (listening, wait ) , sort the flock (then , warn the "goats" & kill the "sheep" ) ; kill them, dump qualms, shift moralities, values aside, each one; die sheep! die to reverse the system you accept (reject, respect) ; next step, kill next sacrifice, each sacrifice, wait , redo ritual until "all the spirits are pleased" ; do it ("as they say" ) . do it(*everyone***must***participate***in***forbidden**s *e*x*) . return last victim; package body; exit crypt (time , times & "half a time" ) & close it, select (quickly) & warn your next victim; AFTERWORDS: tell nobody, wait , wait until time ; wait until next year, next decade; sleep , sleep , die yourself, die at last

Редакторы

  • ActiveState Komodo
  • EPIC - Perl Editor and IDE for Eclipse

См. также

  • Сравнение возможностей Perl с другими языками см. в статье Сравнение языков программирования
  • Parrot

Ссылки

  • www.perl.org - Официальный сайт языка Perl
  • www.cpan.org - Архив библиотек для языка Perl
  • www.activestate.com/Products/activeperl дистрибутив Perl от ActiveState
  • perl6.ru - информация о новой версии Perl 6
  • forum.vingrad.ru/Perl-forum.html - русскоязычный форум о Perl на Vingrad
  • ru_perl - русскоязычное комьюнити в ЖЖ
  • kiev.pm - Активное комьюнити разработчиков на Perl
  • brainworker.ru - поиск по сайтам о Perl
  • Критический анализ языка PERL - детальный анализ и критика основных языковых средств Perl с точки зрения статических языков. Несколько устаревшая статья.

Документация

  • perlintro - краткое введение и обзор Perl’а
  • perlsyn - синтакс Perl’а
  • perlre - регулярные выражения в Perl
  • perlfaq - ответы на часто задаваемые вопросы по Perl (также см. русский перевод)

Видео

  • YAPC::TV - видеозаписи с Perl-мероприятий

Обучение

  • Perl 6 Tutorial - видеозаписи серии докладов, сделанных на украинском воркшопе «Perl Mova» 23 февраля 2008 года.

Сообщества

В России

  • Moscow.pm (Москва)
  • Vladivostok.pm (Владивосток)
  • Kazan.pm (Казань)
  • RostovOnDon.pm (Ростов-на-Дону)
  • SPb.pm (Санкт-Петербург)

На Украине

  • Kiev.pm (Киев)
  • Odessa.pm (Одесса)

В Белоруссии

  • Minsk.pm (Минск)

Литература

  • Рэндал Л. Шварц, Брайан Д. Фой и Том Феникс Perl: изучаем глубже . - O"Reilly, "Символ", 2007. - ISBN 978-5-93286-093-9
  • Пол Уайтхэд Perl: наглядный курс программирования = Perl: Your Visual Blueprint for Building Perl Scripts. - М.: «Диалектика» , 2001. - С. 280. - ISBN 0-7645-3478-5
  • Линкольн Д. Штайн, Разработка сетевых программ на Perl : Пер. с англ. - М. : 2001. - 752 стр. с ил., Издательство «Вильямс» .


Рекомендуем почитать

Наверх