Сегодня мы рассмотрим: Настоящие ценители музыки знают, что для качественного...
Язык 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. Там лежала тридцатидневная Демо версия.
Ну, думаю, пора переходить непосредственно к делу. В общем случае, скрипт на Перл, как и любая другая программа, работает так:
- получает данные
- обрабатывает данные
- выдает результаты
Передать данные скрипту можно двумя методами - 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. При этом страница с формой - отдельно, скрипт - отдельно. Можно сделать красивее и удобнее: объединить страницу и скрипт в единое целое. Для этого скрипт пишется по схеме:
- При первом запуске скрипт рисует HTML страницу с формой и ссылкой в тэге ACTION на самого себя. Первый запуск определяется по отсутствию входных данных.
- Если входные данные есть, то получаем их, обрабатываем и выдаем результаты.
#! 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
=
Регулярные выражения
В 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 стр. с ил., Издательство «Вильямс» .
Свободное и открытое программное обеспечение | |
---|---|
Главное |