Jump to content

Перл

(Перенаправлено из Perl 5 )

Перл
Парадигма Мультипарадигмальность
Разработано Ларри Уолл
Разработчик Ларри Уолл
Впервые появился 18 декабря 1987 г .; 36 лет назад ( 1987-12-18 ) [1]
Стабильная версия
  • 5.40.0 [2] / 9 июня 2024 г .; 56 дней назад ( 09.06.2024 )
  • 5.38.2 [3] / 29 ноября 2023 г .; 8 месяцев назад ( 29.11.2023 )
Предварительный выпуск
5.41.1 [4] / 2 июля 2024 г .; 33 дня назад ( 2024-07-02 )
Дисциплина набора текста Динамический
Язык реализации С
ТЫ Кросс-платформенный
Лицензия Художественный 1.0 [5] [6] или GNU General Public License версии 1 или любой более поздней версии. [7]
Расширения имен файлов .plx, .pls, .pl, .pm, .xs, .t, .pod, .cgi, .psgi
Веб-сайт perl.org
Под влиянием
AWK , BASIC , C , C++ , Lisp , sed , оболочка Unix [8]
Под влиянием
КофеСкрипт , [ нужна ссылка ] Крути , [ нужна ссылка ] JavaScript , Julia , LPC , PHP , Python , Raku , Ruby , PowerShell

Perl — это уровня высокого общего назначения интерпретируемый динамический язык программирования . Хотя Perl официально не является аббревиатурой, [9] используются различные обратные названия , в том числе «Язык практического извлечения и отчетности». [10]

Perl был разработан Ларри Уоллом в 1987 году. [11] как универсальный Unix язык сценариев , упрощающий обработку отчетов. [12] [11] [13] С тех пор он претерпел множество изменений и доработок. Первоначально Perl не писался с заглавной буквы, и к моменту выпуска Perl 4 имя было изменено на заглавную. [13] Последней версией является Perl 5, впервые выпущенная в 1994 году. С 2000 по октябрь 2019 года в разработке находилась шестая версия Perl; название шестой версии было изменено на Raku . [14] [15] Оба языка продолжают разрабатываться независимо разными командами разработчиков, которые щедро заимствуют идеи друг у друга.

Perl заимствует функции из других языков программирования, включая C , sh , AWK и sed . [1] Он предоставляет возможности обработки текста без произвольных ограничений на длину данных, присущих многим современным инструментам командной строки Unix . [16] Perl — очень выразительный язык программирования: исходный код для данного алгоритма может быть коротким и легко сжимаемым. [17] [18]

Perl приобрел широкую популярность в середине 1990-х годов как язык сценариев CGI , отчасти благодаря своим мощным возможностям регулярного выражения и строк анализа . [19] [20] [21] [22] Помимо CGI, Perl 5 используется для системного администрирования , сетевого программирования , финансов, биоинформатики и других приложений, например для графических интерфейсов . Его прозвали «бензопилой скриптовых языков швейцарской армии» из-за его гибкости и мощности. [23] В 1998 году его также называли « клейкой лентой , которая скрепляет Интернет », имея в виду как его повсеместное использование в качестве связующего языка , так и его воспринимаемую неэлегантность. [24]

Название и логотипы

[ редактировать ]
Символ верблюда, используемый O'Reilly Media.
Логотип лука, используемый The Perl Foundation.
Альтернативный логотип Perl 5

Первоначально Perl назывался «Жемчуг». Уолл хотел дать языку короткое название с положительным подтекстом. Это также христианская отсылка к притче о жемчужине из Евангелия от Матфея. [11] [25] Однако Уолл обнаружил существующий язык PEARL до официального выпуска Perl, изменил написание имени и исключил из имени букву «а». [26] [11]

Название иногда расширяется как бэкроним : «Практическое извлечение и язык отчетов». [27] Уолла и собственный список патологически эклектичного мусора , который находится на странице руководства по Perl. [28]

Книга Programming Perl , изданная O'Reilly Media изображение верблюда и обычно называется «Верблюжьей книгой». , имеет на обложке [29] Это изображение стало неофициальным символом Perl. О'Рейли владеет изображением как товарным знаком , но лицензирует его для некоммерческого использования, требуя только подтверждения и ссылки на www.perl.com. Лицензирование коммерческого использования определяется в каждом конкретном случае. [30] О'Рейли также предоставляет логотипы «Programming Republic of Perl» для некоммерческих сайтов и кнопки «Powered by Perl» для всех сайтов, использующих Perl. [30]

Фонд Perl владеет альтернативным символом — луком, лицензию на который он предоставляет своим дочерним компаниям Perl Mongers , PerlMonks , Perl.org и другим. [31] Символ представляет собой визуальную игру слов на жемчужном луке . [32]

Себастьян Ридель, создатель Mojolicious , создал логотип с изображением динозавра-хищника , который доступен по лицензии CC-SA, версия 4.0. [33] Аналог хищника взят из серии выступлений Мэтта С. Траута, начавшихся в 2010 году. [34]

Ранние версии

[ редактировать ]

Ларри Уолл начал работать над Perl в 1987 году, когда работал программистом в Unisys ; [16] он выпустил версию 1.0 18 декабря 1987 года. [1] [11] Уолл основывал ранний Perl на некоторых методах существующих языков, используемых для манипулирования текстом. [11]

Perl 2, выпущенный в июне 1988 г., [35] [36] появился улучшенный движок регулярных выражений. Perl 3, выпущенный в октябре 1989 года. [35] добавлена ​​поддержка потоков двоичных данных . [37]

1990-е годы

[ редактировать ]

Первоначально единственной документацией по Perl была одна длинная справочная страница . В 1991 году была опубликована книга «Программирование на Perl» , известная многим программистам Perl как «Верблюжья книга» из-за ее обложки, которая стала фактическим справочником по языку. [38] В то же время номер версии Perl был увеличен до 4 не для обозначения серьезных изменений в языке, а для обозначения версии, которая была хорошо документирована в книге. [39] Perl 4 был выпущен в марте 1991 года. [35]

Perl 4 прошел через серию обновлений , кульминацией которых стал Perl 4.036 в 1993 году, после чего Уолл отказался от Perl 4, чтобы начать работу над Perl 5. Первоначальная разработка Perl 5 продолжалась и в 1994 году. perl5-porters, В мае 1994 года был создан список рассылки чтобы координировать работу по портированию Perl 5 на разные платформы. Он остается основным форумом для разработки, обслуживания и портирования Perl 5. [40]

Perl 5.000 был выпущен 17 октября 1994 года. [41] Это была почти полная переписка интерпретатора , и в язык было добавлено множество новых функций, включая объекты , ссылки , лексические (мои) переменные и модули . Важно отметить, что модули предоставляли механизм расширения языка без изменения интерпретатора. Это позволило базовому интерпретатору стабилизироваться, в то же время позволяя обычным программистам Perl добавлять новые возможности языка. С тех пор Perl 5 находится в активной разработке.

Perl 5.001 был выпущен 13 марта 1995 года. Perl 5.002 был выпущен 29 февраля 1996 года с новой функцией прототипов. Это позволило авторам модулей создавать подпрограммы , которые вели себя как встроенные функции Perl . Perl 5.003 был выпущен 25 июня 1996 года как версия безопасности. [42]

Одно из наиболее важных событий в истории Perl 5 произошло за пределами собственно языка и стало следствием поддержки его модулей. 26 октября 1995 года была создана Комплексная сеть архивов Perl (CPAN) как хранилище языка Perl и модулей Perl ; по состоянию на декабрь 2022 г. , он содержит более 211 850 модулей в 43 865 дистрибутивах, написанных более чем 14 324 авторами, и зеркально отображен по всему миру в более чем 245 местах. [43]

Perl 5.004 был выпущен 15 мая 1997 года и включал, среди прочего, пакет UNIVERSAL, предоставлявший Perl базовый объект, из которого автоматически производились все классы , и возможность запрашивать версии модулей. Еще одним важным событием стало включение CGI.pm. модуля [44] что способствовало популярности Perl как языка сценариев CGI . [45]

В Perl 5.004 добавлена ​​поддержка Microsoft Windows , Plan 9 , QNX и AmigaOS . [44]

Perl 5.005 был выпущен 22 июля 1998 года. Этот выпуск включал в себя несколько усовершенствований механизма регулярных выражений , новые перехваты в серверной части через B::* модули, qr// оператор котировок регулярных выражений, большой выбор других новых основных модулей и добавлена ​​поддержка еще нескольких операционных систем, включая BeOS . [46]

Основная версия [41] Последнее обновление [47]
Старая версия, больше не поддерживается: 5.4. 1999-04-29
Старая версия, больше не поддерживается: 5.5. 2004-02-23
Старая версия, больше не поддерживается: 5.6. 2003-11-15
Старая версия, больше не поддерживается: 5.8. 2008-12-14
Старая версия, больше не поддерживается: 5.10. 2009-08-22
Старая версия, больше не поддерживается: 5.12. 2012-11-10
Старая версия, больше не поддерживается: 5.14. 2013-03-10
Старая версия, больше не поддерживается: 5.16. 2013-03-11
Старая версия, больше не поддерживается: 5.18. 2014-10-01
Старая версия, больше не поддерживается: 5.20. 2015-09-12
Старая версия, больше не поддерживается: 5.22. 2017-07-15
Старая версия, больше не поддерживается: 5.24. 2018-04-14
Старая версия, больше не поддерживается: 5.26. 2018-11-29
Старая версия, больше не поддерживается: 5.28. 2020-06-01
Старая версия, больше не поддерживается: 5.30. 2020-06-01
Старая версия, больше не поддерживается: 5.32. 2021-01-23
Старая версия, больше не поддерживается: 5.34. 2023-11-29
Старая версия, больше не поддерживается: 5.36. 2023-11-29
Старая версия, но все еще поддерживается: 5.38. 2023-11-29
Текущая стабильная версия: 5.40. 2024-06-09
Legend:
Старая версия
Старая версия, все еще поддерживается
Текущая стабильная версия
Последняя предварительная версия
Будущий выпуск

Perl 5.6 был выпущен 22 марта 2000 года. Основные изменения включали 64-битности поддержку , строковое представление Unicode , поддержку файлов размером более 2 ГиБ и ключевое слово «our». [48] [49] При разработке Perl 5.6 было принято решение переключить схему управления версиями на более похожую на другие проекты с открытым исходным кодом; после 5.005_63 следующей версией стала 5.5.640, при этом планируется, что версии для разработки будут иметь нечетные номера, а стабильные версии - четные. [50]

В 2000 году Уолл призвал сообщество предложить предложения по новой версии Perl. В результате этого процесса был создан 361 документ RFC (запрос на комментарии), которые должны были использоваться при разработке Perl 6. В 2001 г. [51] началась работа над «Апокалипсисом» для Perl 6, серией документов, призванных обобщить запросы на изменения и представить дизайн следующего поколения Perl. Они были представлены как сборник RFC, а не как формальный документ. На тот момент Perl 6 существовал только как описание языка. [ нужна ссылка ]

Perl 5.8 был впервые выпущен 18 июля 2002 года, и с тех пор последующие версии 5.X выпускались примерно ежегодно. В Perl 5.8 улучшена поддержка Unicode, добавлена ​​новая реализация ввода-вывода, добавлена ​​новая реализация потоков, улучшена числовая точность и добавлено несколько новых модулей. [52] По состоянию на 2013 год эта версия по-прежнему оставалась самой популярной версией Perl и использовалась Red Hat 5, Suse 10, Solaris 10, HP-UX 11.31 и AIX 5.

В 2004 году началась работа над «Синопсисами» — документами, которые первоначально суммировали Апокалипсисы, но стали спецификацией языка Perl 6. В феврале 2005 года Одри Танг начала работу над Pugs , интерпретатором Perl 6, написанным на Haskell . [53] Это была первая совместная попытка сделать Perl 6 реальностью. Эти усилия застопорились в 2006 году. [54]

PONIE — это аббревиатура от Perl On New Internal Engine. Проект PONIE существовал с 2003 по 2006 год и должен был стать мостом между Perl 5 и Perl 6. Это была попытка переписать интерпретатор Perl 5 для работы на Parrot , виртуальной машине Perl 6. Целью было обеспечить будущее миллионов строк кода Perl 5 в тысячах компаний по всему миру. [55] Проект PONIE завершился в 2006 году и больше не развивается активно. Некоторые улучшения, внесенные в интерпретатор Perl 5 как часть PONIE, были включены в этот проект. [56]

18 декабря 2007 г., в день 20-летия Perl 1.0, был выпущен Perl 5.10.0. Perl 5.10.0 включал в себя заметные новые функции, приближающие его к Perl 6. К ним относятся оператор переключения (называемый «given»/«when»), обновления регулярных выражений и оператор интеллектуального сопоставления (~~). [57] [58] Примерно в это же время началась серьезная разработка другой реализации Perl 6, известной как Rakudo Perl, разработанной совместно с виртуальной машиной Parrot . По состоянию на ноябрь 2009 года Rakudo Perl выпускался регулярно ежемесячно и теперь является наиболее полной реализацией Perl 6.

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

12 апреля 2010 г. был выпущен Perl 5.12.0. Заметные основные улучшения включают в себя новые package NAME VERSION синтаксис, оператор yada yada (предназначен для обозначения кода-заполнителя, который еще не реализован), неявные ограничения, полное соответствие Y2038 , перегрузка преобразования регулярных выражений, поддержка DTrace и Unicode 5.2. [59]

14 мая 2011 г. был выпущен Perl 5.14 со JSON . встроенной поддержкой [60]

20 мая 2012 г. был выпущен Perl 5.16. Примечательные новые функции включают возможность указать конкретную версию Perl, которую нужно эмулировать, что позволяет пользователям обновлять свою версию Perl, но при этом запускать старые сценарии, которые обычно были бы несовместимы. [61] [ не удалось пройти проверку ] Perl 5.16 также обновляет ядро ​​для поддержки Unicode 6.1. [61]

18 мая 2013 г. был выпущен Perl 5.18. Примечательные новые функции включают новые хуки dtrace, лексические подпрограммы, дополнительные подсистемы CORE::, пересмотр хеша по соображениям безопасности, поддержку Unicode 6.2. [62]

27 мая 2014 г. был выпущен Perl 5.20. В число заметных новых функций входят сигнатуры подпрограмм, синтаксис хэш-срезов/новых срезов, постфиксное разыменование (экспериментальное), Unicode 6.3 и функция rand(), использующая согласованный генератор случайных чисел. [63]

Некоторые наблюдатели считают, что выпуск Perl 5.10 положил начало движению Modern Perl. [64] В частности, эта фраза описывает стиль разработки, который предполагает использование CPAN, использует преимущества последних разработок в языке и строго относится к созданию высококачественного кода. [65] В то время как книга «Современный Perl» [66] могут быть наиболее заметными носителями этой идеи, другие группы, такие как Enlightened Perl Organization [67] взялись за дело.

В конце 2012 и 2013 годов стартовало несколько проектов альтернативных реализаций Perl 5: Perl5 в Perl6 командой Rakudo Perl, [68] Мо от Стивена Литтла и его друзей, [69] п2 [70] командой Perl11 под руководством Рейни Урбан, gperl от goccy, [71] и rperl, проект Kickstarter, возглавляемый Уиллом Брасвеллом и связанный с проектом Perl11. [72]

Перл 6 и Раку

[ редактировать ]
Камелия , логотип проекта Perl 6. [73]

На конференции Perl 2000 года Джон Орвант выступил за крупную инициативу в области нового языка. [74] Это привело к решению начать работу над перепроектированием языка, который будет называться Perl 6. Предложения по новым функциям языка были получены от сообщества Perl в целом, которое представило более 300 RFC . [75]

Следующие несколько лет Уолл провел, перерабатывая RFC и синтезируя их в последовательную структуру для Perl 6. Он представил свой проект Perl 6 в серии документов под названием «апокалипсисы», пронумерованных в соответствии с главами в книге « Программирование на Perl» . По состоянию на январь 2011 г. , развивающаяся спецификация Perl 6 была инкапсулирована в проектные документы, называемые Синопсисами, пронумерованные в соответствии с Апокалипсисами. [76]

В диссертационной работе Брэдли М. Куна под руководством Уолла рассматривалось возможное использование виртуальной машины Java в качестве среды выполнения Perl. [77] Диссертация Куна показала, что такой подход проблематичен. В 2001 году было решено, что Perl 6 будет работать на межъязыковой виртуальной машине под названием Parrot .

В 2005 году Одри Танг создала проект Pugs — реализацию Perl 6 на Haskell . Он служил и продолжает выступать в качестве тестовой платформы для языка Perl 6 (отдельно от разработки фактической реализации), позволяя разработчикам языка исследовать его. Проект Pugs породил активное межъязыковое сообщество Perl/Haskell, сосредоточенное вокруг IRC-канала Libera Chat #raku. Многие влияния функционального программирования были учтены командой разработчиков Perl 6. [78]

В 2012 году разработка Perl 6 была сосредоточена в основном на двух компиляторах: [79]

  1. Rakudo — реализация, работающая на виртуальной машине Parrot и виртуальной машине Java. [80]
  2. Niecza , ориентированный на среду Common Language Runtime .

В 2013 году MoarVM («Метамодель во время выполнения»), виртуальная машина на основе языка C, разработанная в первую очередь для Rakudo. была анонсирована [81]

В октябре 2019 года Perl 6 был переименован в Raku. [82]

По состоянию на 2017 год только реализация Rakudo и MoarVM находятся в активной разработке, и другие виртуальные машины, такие как виртуальная машина Java и JavaScript . поддерживаются [83]

В июне 2020 года Perl 7 был объявлен преемником Perl 5. [84] Первоначально Perl 7 должен был быть основан на Perl 5.32, выпуск которого ожидался в первой половине 2021 года, а кандидаты были выпущены раньше. [85]

Этот план был пересмотрен в мае 2021 года без указания сроков выпуска или версии Perl 5 для использования в качестве базовой версии. [86] Когда будет выпущен Perl 7, Perl 5 перейдет на долгосрочную поддержку. Однако поддерживаемые версии Perl 5 по-прежнему будут получать важные исправления безопасности и ошибок. [87]

Perl 7 был анонсирован 24 июня 2020 года на «Perl Conference in the Cloud» как преемник Perl 5. [85] [84] Предполагалось, что Perl 7 будет основан на Perl 5.32 и будет обратно совместим с современным кодом Perl 5; Код Perl 5, без шаблонного заголовка (pragma), необходимо добавить use compat::perl5; чтобы оставаться совместимым, но современный код может отказаться от части шаблона.

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

Философия

[ редактировать ]

По словам Уолла, у Perl есть два лозунга. Первый — «Есть несколько способов сделать это», широко известный как TMTOWTDI (произносится как Тим Тоади ). Как утверждают сторонники этого девиза, эта философия позволяет легко писать краткие заявления. [89] [90] [91]

Второй лозунг: «Легкие вещи должны быть легкими, а сложные — возможными». [16]

Разработку Perl можно рассматривать как ответ на три основные тенденции в компьютерной индустрии: снижение стоимости оборудования, рост затрат на рабочую силу и усовершенствование технологии компилятора . Многие ранние компьютерные языки, такие как Фортран и Си, были направлены на эффективное использование дорогостоящего компьютерного оборудования. Напротив, Perl был разработан для того, чтобы программисты могли писать программы быстрее и проще. [92]

Perl имеет множество функций, которые облегчают задачу программиста за счет увеличения требований к процессору и памяти. К ним относятся автоматическое управление памятью; динамическая типизация ; строки, списки и хеши; регулярные выражения; самоанализ ; и eval() функция. Perl следует теории «отсутствия встроенных ограничений». [29] идея аналогична правилу Zero One Infinity .

Уолл получил лингвистическое образование, и дизайн Perl во многом основан на лингвистических принципах. Примеры включают кодирование Хаффмана (общие конструкции должны быть короткими), хорошее взвешивание концов (важная информация должна идти на первом месте) и большую коллекцию языковых примитивов . Perl предпочитает языковые конструкции, которые являются краткими и естественными для написания людьми, даже если они усложняют интерпретатор Perl. [93]

Perl Синтаксис отражает идею о том, что «различные вещи должны выглядеть по-разному». [94] Например, скаляры, массивы и хеши имеют разные ведущие символы. Индексы массивов и хэш-ключи используют разные виды фигурных скобок. Строки и регулярные выражения имеют разные стандартные разделители.

Существует широкий практический подход как к языку Perl, так и к сообществу и культуре, которые его окружают. Предисловие к книге «Программирование на Perl» начинается со слов: «Perl — это язык для выполнения вашей работы». [16] Одним из последствий этого является то, что Perl не является аккуратным языком. Он включает в себя множество функций, допускает исключения из своих правил и использует эвристику для разрешения синтаксической неоднозначности. Из-за снисходительности компилятора иногда бывает трудно найти ошибки. В документации по функциям Perl о вариативном поведении встроенных функций в списочном и скалярном контекстах говорится: «В общем, они делают то, что вы хотите, если только вам не нужна согласованность». [95]

Общая структура Perl во многом заимствована из C. Perl является процедурным по своей природе, с переменными , выражениями , операторами присваивания , фигурными скобками , разделенными блоками , управляющими структурами и подпрограммами . [96]

Perl также использует возможности программирования оболочки. Все переменные отмечены ведущими знаками , которые позволяют интерполировать переменные непосредственно в строки . Однако, в отличие от оболочки, Perl использует знаки при каждом доступе к переменным, и в отличие от большинства других языков программирования, использующих знаки, знак обозначает не тип переменной, а тип выражения. Так, например, хотя массив обозначается знаком «@» (например, @arrayname), отдельный член массива обозначается скалярным знаком «$» (например, $arrayname[3]). Perl также имеет множество встроенных функций, которые предоставляют инструменты, часто используемые в программировании оболочки (хотя многие из этих инструментов реализованы программами, внешними по отношению к оболочке), такие как сортировка и вызов средств операционной системы . [ нужна ссылка ]

Perl берет хеши («ассоциативные массивы») из AWK и регулярные выражения из sed . Это упрощает многие задачи синтаксического анализа, обработки текста и управления данными. В Лиспе общим является неявный возврат последнего значения в блоке, а все операторы также являются выражениями, которые сами по себе могут использоваться в более крупных выражениях. [ нужна ссылка ]

В Perl 5 добавлены функции, поддерживающие сложные структуры данных , первоклассные функции (то есть замыкания как значения) и модель объектно-ориентированного программирования. К ним относятся ссылки на основе классов , пакеты, диспетчеризация методов и переменные с лексической областью , а также директивы компилятора (например, strict прагма ). Основной дополнительной функцией, представленной в Perl 5, была возможность упаковывать код в виде повторно используемых модулей. Позже Уолл заявил, что «вся цель системы модулей Perl 5 заключалась в том, чтобы стимулировать рост культуры Perl, а не ядра Perl». [97]

Все версии Perl осуществляют автоматический ввод данных и автоматическое управление памятью . Интерпретатор знает тип и требования к хранению каждого объекта данных в программе; он выделяет и освобождает для них память по мере необходимости, используя подсчет ссылок (поэтому он не может освободить циклические структуры данных без ручного вмешательства). Преобразования допустимых типов — например, преобразования числа в строку — выполняются автоматически во время выполнения ; Незаконные преобразования типов являются фатальными ошибками. [ нужна ссылка ]

Синтаксис

[ редактировать ]

называли Perl « линейным шумом Критики » и «языком только для записи». Рэндал Л. Шварц в первом издании книги Learning Perl , [98] в первой главе говорится: «Да, иногда Perl для непосвященного выглядит как линейный шум, но для опытного Perl-программиста он выглядит как строковый шум с контрольной суммой , имеющий жизненное предназначение». [99] Он также заявил, что обвинений в том, что Perl является языком, предназначенным только для записи, можно избежать, если программировать с «должной осторожностью». [99] В обзорном документе Perl perlintro говорится, что имена встроенных «магических» скалярных переменных «выглядят как знаки препинания или линейный шум». [100] Однако модуль английского языка предоставляет как длинные, так и краткие альтернативы английскому языку. В документе perlstyle указано, что строковый шум в регулярных выражениях можно уменьшить с помощью /x модификатор для добавления пробелов. [101]

Согласно FAQ по Perl 6 , Perl 6 был разработан для устранения «обычных подозреваемых», вызывающих у критиков Perl 5 претензии о «линейном шуме», включая удаление «большинства переменных пунктуации» и очистку синтаксиса регулярных выражений. . [102] В FAQ по Perl 6 также говорится, что то, что иногда называют линейным шумом Perl, является «действительным синтаксисом языка», точно так же, как герундий и предлоги являются частью английского языка . [102] В сообщении в блоге за декабрь 2012 года, несмотря на утверждение, что «Rakudo Perl 6 потерпел неудачу и будет продолжать терпеть неудачу, если не получит какого-либо контроля со стороны взрослых», chromatic заявил, что дизайн Perl 6 имеет «четко определенную грамматику», «улучшенный тип». система, единая объектная система с интеллектуальной метамоделью, метаоператорами и более четкой системой контекста, которая обеспечивает такие тонкости, как всепроникающая лень». [103] Он также заявил, что «Perl 6 обладает связностью и последовательностью, которой нет в Perl 5». [103]

В Perl можно было бы написать «Hello, World!» программа как:

print "Hello, World!\n";

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

#!/usr/bin/perl
use strict;
use warnings;

my ( $remaining, $total );

$remaining=$total=shift(@ARGV);

STDOUT->autoflush(1);

while ( $remaining ) {
 printf ( "Remaining %s/%s \r", $remaining--, $total );
 sleep 1;
}

print "\n";

Интерпретатор Perl также можно использовать для одноразовых сценариев в командной строке. Следующий пример (вызываемый из sh-совместимой оболочки, такой как Bash ) преобразует строку «Bob» во всех файлах, оканчивающихся на .txt в текущем каталоге, в «Robert»:

$ perl -i.bak -lp -e 's/Bob/Robert/g' *.txt

Выполнение

[ редактировать ]

Для версий Perl до Perl 5 не существует письменной спецификации или стандарта языка Perl, и не планируется создавать такую ​​спецификацию для текущей версии Perl. Была только одна реализация интерпретатора, и язык развивался вместе с ней. является Этот интерпретатор вместе со своими функциональными тестами фактически спецификацией языка. Однако Perl 6 начался со спецификации, [104] и несколько проектов [105] цель реализовать некоторые или все спецификации. [ нужна ссылка ]

Perl реализован как основной интерпретатор, написанный на C, вместе с большой коллекцией модулей, написанных на Perl и C. По состоянию на 2010 г. , интерпретатор состоит из 150 000 строк кода C и компилируется в исполняемый файл размером 1 МБ на типичных машинных архитектурах. Альтернативно интерпретатор можно скомпилировать в библиотеку ссылок и встроить в другие программы. В дистрибутив входит около 500 модулей, содержащих 200 000 строк Perl и еще 350 000 строк кода C (большая часть кода C в модулях состоит из таблиц кодировки символов ). [ нужна ссылка ]

Интерпретатор имеет объектно-ориентированную архитектуру. Все элементы языка Perl — скаляры, массивы, хеши, ссылки на коды, дескрипторы файлов — представлены в интерпретаторе C. структурами Операции над этими структурами определяются большой коллекцией макросов , определений типов и функций; они составляют Perl C API . API Perl может сбить с толку непосвященных, но его точки входа следуют последовательной схеме именования , которая обеспечивает руководство для тех, кто его использует. [ нужна ссылка ]

Жизнь интерпретатора Perl в общих чертах делится на этап компиляции и этап выполнения. [106] В Perl фазы — это основные этапы жизненного цикла интерпретатора. Каждый переводчик проходит каждый этап только один раз, и эти этапы следуют в фиксированной последовательности. [ нужна ссылка ]

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

Во время компиляции интерпретатор анализирует код Perl в синтаксическое дерево . Во время выполнения он выполняет программу, обходя дерево . Текст анализируется только один раз, а синтаксическое дерево подвергается оптимизации перед выполнением, поэтому выполнение является относительно эффективным. Оптимизация синтаксического дерева во время компиляции включает в себя свертывание констант и распространение контекста, но оптимизация «глазка» . также выполняется [107]

Perl имеет полную по Тьюрингу грамматику , поскольку на синтаксический анализ может влиять код времени выполнения, выполняемый на этапе компиляции. [108] Следовательно, Perl невозможно проанализировать с помощью прямой Lex / Yacc комбинации лексера / парсера . Вместо этого интерпретатор реализует свой собственный лексер, который координирует свои действия с модифицированным парсером GNU bison для разрешения неоднозначностей в языке. [ нужна ссылка ]

Часто говорят: «Только Perl может анализировать Perl». [109] это означает, что только интерпретатор Perl ( perl) может парсить язык Perl ( Perl ), но даже это, в общем-то, не так. Поскольку интерпретатор Perl может моделировать машину Тьюринга на этапе компиляции, ему необходимо будет решить проблему остановки , чтобы завершить синтаксический анализ в каждом случае. Давний результат состоит в том, что проблема остановки неразрешима, и поэтому даже Perl не всегда может его проанализировать. Perl делает необычный выбор, предоставляя пользователю доступ ко всем возможностям программирования на собственной стадии компиляции. Стоимость с точки зрения теоретической чистоты высока, но практические неудобства кажутся редкими. [110]

Другим программам, которые берутся за анализ Perl, таким как анализаторы исходного кода и автоиндентеры , приходится сталкиваться не только с неоднозначными синтаксическими конструкциями , но и с неразрешимостью синтаксического анализа Perl в общем случае. Проект PPI ​​Адама Кеннеди был сосредоточен на анализе кода Perl как документа (с сохранением его целостности как документа), вместо анализа Perl как исполняемого кода (что не всегда может сделать даже сам Perl). Именно Кеннеди первым предположил, что «анализ Perl страдает от «проблемы остановки»». [111] что впоследствии было доказано. [112]

Perl распространяется с более чем 250 000 функциональными тестами для основного языка Perl и более 250 000 функциональными тестами для основных модулей. Они выполняются как часть обычного процесса сборки и активно проверяют интерпретатор и его основные модули. Разработчики Perl полагаются на функциональные тесты, чтобы гарантировать, что изменения в интерпретаторе не приведут к ошибкам в программном обеспечении ; кроме того, пользователи Perl, которые видят, что интерпретатор проходит функциональные тесты в их системе, могут иметь высокую степень уверенности в том, что он работает правильно. [ нужна ссылка ]

Perl имеет двойную лицензию : Artistic License 1.0. [5] [6] и Стандартная общественная лицензия GNU . [7] Дистрибутивы доступны для большинства операционных систем . Он особенно распространен в Unix и Unix-подобных системах, но был перенесен на большинство современных (и многие устаревшие) платформы. Всего шесть [ нужна ссылка ] В случае зарегистрированных исключений Perl можно скомпилировать из исходного кода на всех POSIX- совместимых или иным образом совместимых с Unix платформах. [113]

Из-за необычных изменений, необходимых для классической среды Mac OS , отдельный порт под названием MacPerl был выпущен отдельно. [114]

Комплексная сеть архивов Perl содержит полный список поддерживаемых платформ со ссылками на дистрибутивы, доступные на каждой. [115] CPAN также является источником общедоступных модулей Perl, которые не являются частью основного дистрибутива Perl. [ нужна ссылка ]

ActivePerl — это дистрибутив с закрытым исходным кодом от ActiveState , который имеет регулярные выпуски, отслеживающие основные выпуски Perl. [116] В состав дистрибутива ранее входил менеджер пакетов Perl (PPM), [117] популярный инструмент для установки, удаления, обновления и управления использованием распространенных модулей Perl; однако поддержка этого инструмента была прекращена начиная с версии ActivePerl 5.28. [118] Включен также PerlScript , движок Windows Script Host (WSH), реализующий язык Perl. Visual Perl — это инструмент ActiveState, который добавляет Perl в пакет разработки Visual Studio .NET. Конвертер VBScript -to-Perl, компилятор Perl для Windows и конвертеры awk и sed в Perl также были произведены этой компанией и включены в компакт-диск ActiveState для Windows , который включает в себя все их дистрибутивы, а также Komodo IDE и все но первый вариант Unix/Linux/Posix в 2002 году и впоследствии. [119]

Производительность

[ редактировать ]

В игре Computer Language Benchmarks сравнивается производительность реализаций типичных задач программирования на нескольких языках программирования. [120] Представленные реализации Perl обычно работают в верхней части спектра использования памяти и дают различные результаты по скорости. Производительность Perl в тестах типична для интерпретируемых языков. [121]

Большие программы Perl запускаются медленнее, чем аналогичные программы на компилируемых языках, поскольку Perl приходится компилировать исходный код при каждом запуске. В своем выступлении на конференции YAPC::Europe 2005 и в последующей статье «Своевременное начало» Жан-Луи Лерой обнаружил, что его программы на Perl выполнялись гораздо дольше, чем ожидалось, потому что интерпретатор Perl тратил значительное время на поиск модулей в своих слишком больших включить путь. [122] В отличие от Java, Python и Ruby, Perl имеет только экспериментальную поддержку предварительной компиляции. [123] Таким образом, программы Perl платят этот штраф при каждом выполнении. Фаза выполнения типичных программ достаточно продолжительна, поэтому амортизированное время запуска не является существенным, но тесты, измеряющие очень короткое время выполнения, вероятно, будут искажены из-за этих накладных расходов. [124]

Для улучшения этой ситуации был введен ряд инструментов. Первым таким инструментом был mod_perl от Apache , который стремился устранить одну из наиболее распространенных причин быстрого запуска небольших программ Perl: разработку CGI веб- . ActivePerl через Microsoft ISAPI обеспечивает аналогичные улучшения производительности. [125]

После компиляции кода Perl на этапе выполнения возникают дополнительные издержки, которых обычно нет в программах, написанных на компилируемых языках, таких как C или C++. Примеры таких накладных расходов включают интерпретацию байт-кода , управление памятью с подсчетом ссылок и динамическую проверку типов. [126]

Наиболее важные процедуры могут быть написаны на других языках (например, C ), которые можно подключить к Perl через простые модули Inline или более сложный, но гибкий механизм XS . [127]

Приложения

[ редактировать ]

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

Perl в основном использовался для написания CGI сценариев : крупные проекты, написанные на Perl, включают cPanel , Slash , Bugzilla , RT , TWiki и Movable Type ; веб-сайты с высоким трафиком, широко использующие Perl, включают Priceline.com , Craigslist , [128] ИМДб , [129] Живой Журнал , DuckDuckGo , [130] [131] Слэшдот и Тикетмастер . Это также дополнительный компонент популярного стека технологий LAMP для веб-разработки вместо PHP или Python . Perl широко используется в качестве языка системного программирования в дистрибутиве Debian Linux . [132]

Perl часто используется в качестве связующего языка , связывающего воедино системы и интерфейсы, которые не были специально разработаны для взаимодействия, а также для « обработки данных ». [133] то есть преобразование или обработка больших объемов данных для таких задач, как создание отчетов. Эти сильные стороны тесно связаны между собой. Такое сочетание делает Perl популярным универсальным языком для системных администраторов , особенно потому, что короткие программы, часто называемые « однострочными программами », можно вводить и запускать в одной командной строке . [ нужна ссылка ]

Код Perl можно сделать переносимым в Windows и Unix; такой код часто используется поставщиками программного обеспечения (как готового коммерческого (COTS), так и заказного) для упрощения упаковки и обслуживания сценариев сборки и развертывания программного обеспечения. [ нужна ссылка ]

Perl/Tk и wxPerl обычно используются для добавления графических пользовательских интерфейсов к сценариям Perl.

Возможности Perl по обработке текста можно использовать для генерации SQL запросов ; массивы, хэши и автоматическое управление памятью упрощают сбор и обработку возвращаемых данных. Например, в (API) Perl DBI интерфейсе прикладного программирования Тима Банса аргументами API могут быть тексты SQL-запросов; таким образом, можно программировать на нескольких языках одновременно (например, для создания веб-страницы с использованием HTML , JavaScript и SQL в здесь документе ). Использование интерполяции переменных Perl для программной настройки каждого SQL-запроса, а также спецификация Perl-массивов или хэшей в качестве структур для программного хранения результирующих наборов данных из каждого SQL-запроса позволяет создать механизм высокого уровня для обработки больших объемов данных. для постобработки подпрограммой Perl. [134] В ранних версиях Perl интерфейсы базы данных создавались путем повторного связывания интерпретатора с клиентской библиотекой базы данных. Это было настолько сложно, что это было сделано только для нескольких наиболее важных и наиболее широко используемых баз данных, что ограничивало получаемые результаты. perl исполняемый файл для одновременного использования только одного интерфейса базы данных. [135]

В Perl 5 интерфейсы базы данных реализованы модулями Perl DBI. Модуль DBI (интерфейс базы данных) представляет собой единый, независимый от базы данных интерфейс для приложений Perl, а модули DBD (драйвер базы данных) обрабатывают детали доступа примерно к 50 различным базам данных; существуют драйверы DBD для большинства баз данных ANSI SQL . [136]

DBI обеспечивает кэширование дескрипторов и запросов к базе данных, что может значительно повысить производительность в долгоживущих средах выполнения, таких как mod_perl , [137] помогая системам большого объема предотвращать скачки нагрузки, как в случае с эффектом Slashdot . [138]

В современных приложениях Perl, особенно написанных с использованием веб-фреймворков , таких как Catalyst , модуль DBI часто используется косвенно через объектно-реляционные преобразователи, такие как DBIx::Class , Class::DBI. [139] или Роуз::DB::Object [140] которые генерируют SQL-запросы и обрабатывают данные прозрачно для автора приложения. [141]

Сообщество

[ редактировать ]

Культура и сообщество Perl развивались вместе с самим языком. Usenet был первым общедоступным местом, где был представлен Perl, но в ходе его развития сообщество Perl формировалось под влиянием роста расширения интернет-услуг, включая появление Всемирной паутины. Сообщество, окружающее Perl, фактически было темой первого доклада Уолла «Состояние луковицы». [142]

State of the Onion — это название ежегодных основных докладов Уолла о прогрессе Perl и его сообщества. Они характеризуются его характерным юмором, в котором используются отсылки к культуре Перла, более широкой хакерской культуре, лингвистическому происхождению Уолла, иногда к его семейной жизни, а иногда даже к его христианскому происхождению. [143] Каждый доклад сначала проводится на различных конференциях по Perl, а затем публикуется в Интернете.

В электронной почте, Usenet и сообщениях на досках объявлений распространенной тенденцией являются программы «Просто еще один хакер Perl» (JAPH), созданные Рэндалом Л. Шварцем , одним из первых профессиональных инструкторов Perl. [144] На языке культуры Perl программисты Perl известны как Perl-хакеры, и отсюда возникла практика написания коротких программ для вывода на печать фразы «Просто еще один Perl-хакер». В духе оригинальной концепции эти программы умеренно запутаны и достаточно коротки, чтобы поместиться в подпись электронного письма или сообщения Usenet. «Канонический» JAPH, разработанный Шварцем, включает запятую в конце, хотя ее часто опускают. [145]

«Гольф» на Perl — это развлечение, заключающееся в сокращении количества символов («нажатий клавиш»), используемых в программе на Perl, до минимума, примерно так же, как игроки в гольф стремятся сделать как можно меньше ударов за раунд. Первое использование фразы [146] подчеркнул разницу между пешеходным кодом, предназначенным для обучения новичков, и краткими хаками, которые могут развлечь опытных программистов Perl, примером последнего являются JAPH , которые уже использовались в сигнатурах в сообщениях Usenet и других местах. Подобные трюки были безымянным развлечением на языке APL в предыдущие десятилетия. Использование Perl для написания программы, выполняющей шифрование RSA, вызвало широкий практический интерес к этому занятию. [147] В последующие годы термин « кодовый гольф » стал применяться к этому времяпрепровождению и на других языках. [148] Апокалипсис Perl Golf состоялся на Perl Conference 4.0 в Монтерее, Калифорния, в июле 2000 года.

Как и в случае с C, соревнования по запутанному коду были широко известным развлечением в конце 1990-х годов. Конкурс запутанного Perl — это конкурс, проводившийся The Perl Journal с 1996 по 2000 год и ставший главным достоинством синтаксической гибкости Perl. Награды были вручены в таких категориях, как «самые мощные» — программы, которые эффективно использовали пространство — и «лучшая четырехстрочная подпись» для программ, которые умещались в четыре строки по 76 символов в стиле блока подписи Usenet . [149]

Поэзия на Perl — это практика написания стихов, которые можно скомпилировать в виде легального кода Perl, например, фрагмента, известного как « Черный Перл ». Поэзия Perl стала возможной благодаря большому количеству английских слов, используемых в языке Perl. Новые стихи регулярно представляются сообществу PerlMonks . [150]

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б с Эштон, Элейн (1999). «Хронология Perl и его культуры (v3.0_0505)» . Архивировано из оригинала 11 января 2013 года . Проверено 12 марта 2004 г.
  2. ^ «Perl v5.40.0 теперь доступен» . www.nntp.perl.org . Проверено 11 июня 2024 г.
  3. ^ «Perl 5.34.3, Perl 5.36.3 и Perl 5.38.2 теперь доступны» . www.nntp.perl.org . Проверено 5 декабря 2023 г.
  4. ^ «Объявление о выпуске Perl v5.41.1» . www.nntp.perl.org . Проверено 9 июля 2024 г.
  5. ^ Перейти обратно: а б «Художественная лицензия» — dev.perl.org» . dev.perl.org . Архивировано из оригинала 24 июля 2018 года . Проверено 24 июня 2016 г.
  6. ^ Перейти обратно: а б Художественное. Архивировано 25 июля 2018 г. в Wayback Machine — файл в репозитории Perl 5 git.
  7. ^ Перейти обратно: а б «Лицензирование Perl» . dev.perl.org. Архивировано из оригинала 22 января 2011 года . Проверено 8 января 2011 г.
  8. ^ Ларри Уолл (12 декабря 2007 г.). «Программирование — это сложно, давайте начнем писать сценарии…» Архивировано из оригинала 28 июля 2017 года . Проверено 14 апреля 2019 г. У всех языковых дизайнеров время от времени случаются свои особенности. Просто у меня это получается лучше, чем у большинства.
  9. ^ Лэпворт, Лео. «Общие вопросы о Perl» . Часто задаваемые вопросы по Perl . Перл.орг. Архивировано из оригинала 28 мая 2013 года . Проверено 24 февраля 2012 г.
  10. ^ «perl(1): Практическое извлечение/язык отчетов — справочная страница Linux» . Linux.die.net. Архивировано из оригинала 3 июня 2013 года . Проверено 23 июля 2013 г.
  11. ^ Перейти обратно: а б с д и ж Долго, Тони. «18 декабря 1987 г.: Perl упрощает лабиринт языка программирования» . Проводной . ISSN   1059-1028 . Проверено 14 февраля 2023 г.
  12. ^ Шеппард, Дуг (16 октября 2000 г.). «Введение в Perl для начинающих» . dev.perl.org. Архивировано из оригинала 5 июня 2011 года . Проверено 8 января 2011 г.
  13. ^ Перейти обратно: а б «Ларри Уолл, гуру Perl | Linux Journal» . www.linuxjournal.com . Проверено 30 августа 2023 г.
  14. ^ «О Перле» . perl.org. Архивировано из оригинала 6 ноября 2015 года . Проверено 20 апреля 2013 г. «Perl» — это семейство языков, «Perl 6» — часть семейства, но это отдельный язык, имеющий собственную команду разработчиков. Его существование не оказывает существенного влияния на дальнейшее развитие «Perl 5».
  15. ^ «Путь к Раку» . Гитхаб. Архивировано из оригинала 12 ноября 2020 года . Проверено 14 января 2021 г. В этом документе описаны шаги, которые необходимо предпринять для переименования Perl 6 в Raku.
  16. ^ Перейти обратно: а б с д Уолл, Ларри ; Кристиансен, Том; Орвант, Джон (июль 2000 г.). Программирование на Perl, третье издание . О'Рейли Медиа . ISBN  978-0-596-00027-1 .
  17. ^ «Как измеряются программы | Игра по тестам компьютерного языка» . тестыgame-team.pages.debian.net . Архивировано из оригинала 12 июля 2020 года . Проверено 5 октября 2020 г.
  18. ^ «RSA в 3 строки Perl — Everything2.com» . all2.com . Архивировано из оригинала 8 октября 2020 года . Проверено 5 октября 2020 г.
  19. ^ «Языковая оценка» . Архивировано из оригинала 10 марта 2015 года . Проверено 30 января 2015 г. Самой сильной стороной Perl являются его чрезвычайно мощные встроенные средства для обработки текстовых, построчно-ориентированных форматов данных по шаблонам; в этом он непревзойден.
  20. ^ «ЧТО вы использовали Perl?!» . 24 января 2008 года. Архивировано из оригинала 4 февраля 2015 года . Проверено 4 февраля 2015 г. Perl всегда был подходящим языком для любых задач, требующих ввода с сопоставлением шаблонов.
  21. ^ «Важность Perl» . Архивировано из оригинала 2 февраля 2015 года . Проверено 4 февраля 2015 г. Непревзойденная способность Perl обрабатывать текст...
  22. ^ Смит, Родерик В. (21 июня 2002 г.). Расширенная сеть Linux . Аддисон-Уэсли Профессионал. п. 594 . ISBN  978-0-201-77423-8 .
  23. ^ Шеппард, Дуг (16 октября 2000 г.). «Введение в Perl для начинающих» . О'Рейли Медиа . Архивировано из оригинала 4 июня 2008 года . Проверено 27 июля 2008 г.
  24. ^ Леонард, Эндрю. «Радость Perl» . Салон.com . Архивировано из оригинала 6 июля 2012 года . Проверено 5 июня 2012 г.
  25. ^ «Сценарий на палубе Лидо» . Проводной . 7 марта 2016 года. Архивировано из оригинала 7 марта 2016 года . Проверено 14 февраля 2023 г.
  26. ^ Ричардсон, Марджори (1 мая 1999 г.). «Ларри Уолл, гуру Perl» . Linux-журнал . Архивировано из оригинала 20 июля 2013 года . Проверено 3 января 2011 г.
  27. ^ Шварц, Рэндал ; Фой, Брайан ; Феникс, Том (16 июня 2011 г.). Изучение Перла . О'Рейли Медиа, Инк. с. 4 . ISBN  978-1449313142 . Perl иногда называют «языком практического извлечения и составления отчетов», хотя среди других расширений его также называют «патологически эклектичным списком мусора». На самом деле это бэкроним, а не аббревиатура, поскольку Ларри Уолл, создатель Perl, сначала придумал название, а потом расширение. Вот почему слово «Perl» не пишется заглавными буквами. Нет смысла утверждать, что расширение правильно: Ларри поддерживает и то, и другое.
  28. ^ Уолл, Ларри . «perl — интерпретатор языка Perl» . Документация Perl 5 версии 12.2 . Архивировано из оригинала 1 июля 2013 года . Проверено 26 января 2011 г.
  29. ^ Перейти обратно: а б Шварц, Рэндал Л .; Феникс, Том; Фой, Брайан (6 декабря 2007 г.). Изучение Perl, третье издание . О'Рейли Медиа. ISBN  978-0-596-00132-2 .
  30. ^ Перейти обратно: а б «Информация об использовании Perl Camel и товарных знаках» . О'Рейли Медиа . Архивировано из оригинала 25 апреля 2018 года . Проверено 9 января 2011 г.
  31. ^ «Торговая марка Perl» . Фонд Перла . Архивировано из оригинала 3 мая 2011 года . Проверено 9 января 2011 г.
  32. ^ Гиллмор, Дэн (25 октября 1998 г.). «Республика Перл» . Чикаго Трибьюн . Архивировано из оригинала 30 апреля 2011 года . Проверено 10 января 2011 г.
  33. ^ Ридель, Себастьян (18 января 2012 г.). «Перл 5 Раптор» . Себастьян Ридель . Архивировано из оригинала 11 июня 2018 года . Проверено 12 ноября 2017 г.
  34. ^ Траут, Мэтт (16 июня 2005 г.). «Состояние велоцираптора – вторая фаза» . Шэдоукэт Системс Лимитед . Архивировано из оригинала 13 ноября 2017 года . Проверено 12 ноября 2017 г.
  35. ^ Перейти обратно: а б с Калита, Джугал (декабрь 2003 г.). О Perl: Perl для студентов и профессионалов . Универсал-Издательство. ISBN  978-1-58112-550-4 .
  36. ^ «Перл-культура» . docstore.mik.ua . Проверено 16 марта 2023 г.
  37. ^ Холлоуэй, Рут. «Perl исполняется 30 лет, и его сообщество продолжает процветать | Opensource.com» . opensource.com . Проверено 23 июня 2023 г.
  38. ^ «Программирование на Perl, 3-е издание [Книга]» . www.oreilly.com . Проверено 11 апреля 2023 г.
  39. ^ «perlhist — записи истории Perl — браузер Perldoc» . perldoc.perl.org . Проверено 28 июля 2023 г.
  40. ^ "архив perl.perl5.porters" . perl.org. Архивировано из оригинала 1 мая 2011 года . Проверено 13 января 2011 г.
  41. ^ Перейти обратно: а б "perlhist: записи истории Perl" . Документация Perl 5 версии 12.2 . perldoc.perl.org. Архивировано из оригинала 13 января 2011 года . Проверено 21 января 2011 г.
  42. ^ «Perl | Определение, история и факты | Британника» . www.britanica.com . Проверено 15 июня 2022 г.
  43. ^ «КПАН» . КПАН . Архивировано из оригинала 3 октября 2019 года . Проверено 19 декабря 2022 г.
  44. ^ Перейти обратно: а б «perl5004delta – что нового в perl5.004» . Документация Perl 5 версии 12.2 . perldoc.perl.org. Архивировано из оригинала 27 февраля 2011 года . Проверено 8 января 2011 г.
  45. ^ Патвардхан, Натан; Зивер, Эллен; Спэнхур, Стивен (2002). Кратко о Perl, второе издание . О'Рейли Медиа . ISBN  978-0-596-00241-1 .
  46. ^ «perl5005delta — что нового в perl5.005» . Документация Perl 5 версии 12.2 . perldoc.perl.org. Архивировано из оригинала 3 февраля 2011 года . Проверено 21 января 2011 г.
  47. ^ «Источник Perl» . cpan.org . Проверено 26 ноября 2023 г.
  48. ^ «perl56delta — что нового в Perl v5.6.0» . Документация Perl 5 версии 12.2 . perldoc.perl.org. Архивировано из оригинала 2 февраля 2011 года . Проверено 21 января 2011 г.
  49. ^ «perl56delta — что нового в Perl v5.6.x» . Документация Perl 5 версии 12.2 . perldoc.perl.org. Архивировано из оригинала 18 ноября 2010 года . Проверено 21 января 2011 г.
  50. ^ «Perl | Определение, история и факты | Британника» . www.britanica.com . Проверено 15 июня 2022 г.
  51. ^ Уолл, Ларри. «Апокалипсис 1: Злой, плохой и хороший» . Архивировано из оригинала 23 ноября 2010 года . Проверено 8 января 2011 г.
  52. ^ «perl58delta — что нового в Perl v5.8.0» . Документация Perl 5 версии 12.2 . perldoc.perl.org. Архивировано из оригинала 21 ноября 2010 года . Проверено 21 января 2011 г.
  53. ^ «План для мопсов» . О'Рейли Медиа . 3 марта 2005 года. Архивировано из оригинала 8 сентября 2012 года . Проверено 27 января 2011 г.
  54. ^ Тан, Одри (21 апреля 2010 г.). «Re: Как реализовать Perl 6 за десять лет» . Перлмонкс . Архивировано из оригинала 11 мая 2011 года . Проверено 3 января 2011 г.
  55. ^ Джефф Бродвелл (8 августа 2005 г.), OSCON 4.4: Inside Ponie, Bridge from Perl 5 к Perl 6 , блог O'Reilly ONLamp, заархивировано из оригинала 14 марта 2012 г. , получено 27 июня 2016 г.
  56. ^ Джесси Винсент (23 августа 2006 г.), Пони отправили на пастбище , The Perl Foundation, заархивировано из оригинала 27 июня 2009 г. , получено 15 января 2019 г.
  57. ^ «perl5100delta — что нового в Perl 5.10.0» . Документация Perl 5 версии 12.2 . perldoc.perl.org. Архивировано из оригинала 21 декабря 2010 года . Проверено 8 января 2011 г.
  58. ^ «perlsyn — синтаксис Perl» . Документация Perl 5 версии 12.2 . perldoc.perl.org. Архивировано из оригинала 26 августа 2013 года . Проверено 21 января 2011 г.
  59. ^ «perl5120delta — что нового в Perl v5.12.0» . Документация Perl 5 версии 12.2 . perldoc.perl.org. Архивировано из оригинала 4 января 2011 года . Проверено 8 января 2011 г.
  60. ^ «perl5140delta — что нового в Perl v5.14.0 — Metacpan.org» . Metacpan.org . Архивировано из оригинала 25 июля 2018 года . Проверено 22 июля 2017 г.
  61. ^ Перейти обратно: а б «perl5160delta — что нового в Perl v5.16.0» . perldoc.perl.org . Проверено 21 мая 2012 г.
  62. ^ «perl5180delta — что нового в perl v5.18.0 — язык программирования Perl» . Документация Perl 5 версии 18.0 . Metacpan.org. Архивировано из оригинала 29 октября 2013 года . Проверено 27 октября 2013 г.
  63. ^ «perl5200delta — что нового в perl v5.20.0 — язык программирования Perl» . Документация Perl 5 версии 20.0 . Metacpan.org. Архивировано из оригинала 27 мая 2014 года . Проверено 27 мая 2014 г.
  64. Вехи возрождения Perl — современное программирование на Perl. Архивировано 27 октября 2012 г. в Wayback Machine . Modernperlbooks.com. Проверено 17 июля 2013 г.
  65. ^ Предисловие (Modern Perl 2011-2012). Архивировано 28 сентября 2012 года в Wayback Machine . Modernperlbooks.com. Проверено 17 июля 2013 г.
  66. ^ Modern Perl 2011–2012, издание chromatic | Onyx Neon Press . Архивировано 22 декабря 2011 года в Wayback Machine . Оникснеон.com. Проверено 17 июля 2013 г.
  67. ^ «Просвещенный Перл» . Просвещенный Перл . Архивировано из оригинала 5 февраля 2014 года . Проверено 28 сентября 2012 г.
  68. ^ «YAPC::NA 2013 – 3–5 июня, Остин, Техас» . Yapcna.org. 4 июня 2013. Архивировано из оригинала 22 июня 2013 года . Проверено 11 апреля 2014 г.
  69. ^ Литтл, Стеван (8 февраля 2013 г.). «Что такое Мо (уточнение) | Стивен Литтл» . Блоги.perl.org. Архивировано из оригинала 19 декабря 2013 года . Проверено 11 апреля 2014 г.
  70. ^ «p2 по зелью» . Perl11.org. 7 февраля 2004 года. Архивировано из оригинала 24 сентября 2013 года . Проверено 11 апреля 2014 г.
  71. ^ «goccy/gperl — GitHub» . GitHub.com. Архивировано из оригинала 23 февраля 2015 года . Проверено 11 апреля 2014 г.
  72. ^ "рперл" . RPerl.org. Архивировано из оригинала 18 октября 2014 года . Проверено 11 августа 2014 г.
  73. ^ «Перл 6» . Проект Perl 6. Архивировано из оригинала 21 февраля 2011 года . Проверено 27 февраля 2011 г.
  74. ^ Торкингтон, Натан. «Транскрипция выступления Ларри» . nntp.perl.org. Архивировано из оригинала 1 мая 2011 года . Проверено 25 января 2011 г.
  75. ^ «Perl6 — будущее Perl» . www.java-samples.com . Проверено 18 мая 2021 г.
  76. ^ «Официальная документация Perl 6» . Проект Perl 6. Архивировано из оригинала 31 августа 2009 года . Проверено 25 января 2011 г.
  77. ^ Кун, Брэдли М. (январь 2001 г.). Соображения по портированию Perl на виртуальную машину Java (дипломная работа MS). Университет Цинциннати. Архивировано из оригинала 21 марта 2008 года . Проверено 28 июня 2008 г.
  78. ^ Хроматический (2015). Современный Перл . Прагматичная книжная полка. ISBN  978-1-68050-088-2 .
  79. ^ «Сравнение функций компиляторов Perl 6» . Архивировано из оригинала 11 августа 2017 года . Проверено 28 марта 2012 г.
  80. ^ Уортингтон, Джонатан (15 июля 2013 г.). «Новости Rakudo JVM: больше тестов, а также прототипы Thread и Promise» . 6кишки . Архивировано из оригинала 5 октября 2013 года . Проверено 24 июля 2013 г.
  81. ^ Уортингтон, Джонатан (31 мая 2013 г.). «MoarVM: виртуальная машина для NQP и Rakudo» . 6кишки . Архивировано из оригинала 9 июля 2013 года . Проверено 24 июля 2013 г.
  82. ^ "переименовать-Lwn" . Архивировано из оригинала 17 октября 2019 года . Проверено 10 ноября 2019 г.
  83. ^ «ракудо/ракудо — GitHub» . GitHub.com. Архивировано из оригинала 29 июля 2017 года . Проверено 21 сентября 2013 г.
  84. ^ Перейти обратно: а б «Perl 7 анонсирован на Perl Conference in the Cloud» . perlfoundation.org. 24 июня 2020 года. Архивировано из оригинала 26 июня 2020 года . Проверено 24 июня 2020 г.
  85. ^ Перейти обратно: а б «Анонс Perl 7» . perl.com. 24 июня 2020 года. Архивировано из оригинала 24 июня 2020 года . Проверено 24 июня 2020 г.
  86. ^ Николас Кларк (9 мая 2021 г.). «Заседание Руководящего совета № 019 06.05.2021» . www.nntp.perl.org . Архивировано из оригинала 18 мая 2021 года . Проверено 17 мая 2021 г. Планируется, что обновление Perl 7 будет, но не сразу после выпуска 5.34.0.   ... Мы не думаем, что сможем выпустить [Perl 7] за 12 месяцев.
  87. ^ Подготовка к Perl 7d . leanpub.com. 24 июня 2020 года. Архивировано из оригинала 25 июня 2020 года . Проверено 24 июня 2020 г.
  88. ^ Управляющий совет Perl. «Что случилось с Perl 7?» . blogs.perl.org . Проверено 7 июля 2022 г.
  89. ^ Ричардсон, Марджори. «Ларри Уолл, гуру Perl | Linux Journal» . www.linuxjournal.com . Linux-журнал . Проверено 16 января 2023 г.
  90. ^ Шварц, Алан (декабрь 1998 г.). «Учебник: Perl, психологически эффективный язык переформатирования» . Методы, инструменты и компьютеры исследования поведения . 30 (4): 605–609. дои : 10.3758/BF03209477 . ISSN   0743-3808 . S2CID   61028367 .
  91. ^ Гилберт, Джеймс Г.Р. (март 2002 г.). «Как стать головастиком в программировании» . Природная биотехнология . 20 (3): 221. doi : 10.1038/nbt0302-221 . ISSN   1087-0156 . S2CID   38728402 .
  92. ^ «Падение Perl, самого многообещающего языка Интернета» . Компания Фаст . 13 февраля 2014 г.
  93. ^ Уолл, Ларри. «perl — интерпретатор языка Perl 5 — браузер Perldoc» . perldoc.perl.org . Проверено 24 июня 2021 г.
  94. ^ Уолл, Ларри (1 марта 1997 г.). «Зачем ты?» . Linux-журнал . Архивировано из оригинала 9 декабря 2010 года . Проверено 13 марта 2011 г.
  95. ^ «perlfunc — встроенные функции Perl» . Документация Perl 5 версии 12.2 . perldoc.perl.org. Архивировано из оригинала 6 января 2011 года . Проверено 10 января 2011 г.
  96. ^ Нагпал, ДП (2010). Технология веб-дизайна . Индия: С. Чанд. п. 700. ИСБН  978-8121927635 .
  97. ^ «название неизвестно». 10 мая 1997 г. Usenet:   [адрес электронной почты защищен] . [ мертвая ссылка ]
  98. ^ «Обновление разработчика». Обновление разработчика доктора Добба . 2 . Миллер-Фриман. 1995.
  99. ^ Перейти обратно: а б Шварц, Рэндал Л. (1993). Изучение Перла . О'Рейли и партнеры. Бибкод : 1993lepe.book.....S .
  100. ^ «перлинтро» . Документация Perl 5 версии 18.0 . Perl 5 Porters и perldoc.perl.org. Архивировано из оригинала 9 января 2011 года . Проверено 30 июня 2013 г.
  101. ^ "перлстиль" . Документация Perl 5 версии 18.0 . Perl 5 Porters и perldoc.perl.org. Архивировано из оригинала 26 июня 2013 года . Проверено 30 июня 2013 г.
  102. ^ Перейти обратно: а б «Часто задаваемые вопросы по Perl 6» . Проект Перл 6. Архивировано из оригинала 1 июля 2013 года . Проверено 30 июня 2013 г.
  103. ^ Перейти обратно: а б хроматический (31 декабря 2012 г.). «Реализация Perl 5 по сравнению с Perl 6» . Архивировано из оригинала 29 июля 2013 года . Проверено 30 июня 2013 г.
  104. ^ «Спецификация Perl 6» . Проект Perl 6. Архивировано из оригинала 2 декабря 2009 года . Проверено 27 января 2011 г.
  105. ^ «Компиляторы Perl 6» . Проект Perl 6. Архивировано из оригинала 2 декабря 2009 года . Проверено 27 января 2011 г.
  106. ^ Описание интерпретатора Perl 5 можно найти в книге «Программирование на Perl» , 3-е изд., глава 18. См., в частности, страницу 467, где тщательно различаются фаза выполнения и фаза компиляции от времени выполнения и времени компиляции . Perl «время» и «фазу» часто путают.
  107. ^ «perlguts — Введение в Perl API — Браузер Perldoc» . perldoc.perl.org . Проверено 24 января 2022 г.
  108. ^ Шварц, Рэндал . «О парсинге Perl» . Архивировано из оригинала 27 сентября 2007 года . Проверено 3 января 2007 г.
  109. ^ «Журнал Perl № 19/9.26» (PDF) . О'Рейли Медиа . Проверено 4 февраля 2011 г.
  110. ^ Кеглер, Джеффри (7 октября 2011 г.). «Perl и синтаксический анализ 11: все ли программы на Perl поддаются анализу?» . Проверено 25 октября 2022 г. ... мы, похоже, не отказываемся абсолютно ни от чего. Никто никогда не был в состоянии показать практический недостаток
  111. ^ Кеннеди, Адам (2006). «PPI — разбор, анализ и манипулирование Perl (без Perl)» . КПАН . Архивировано из оригинала 3 сентября 2013 года . Проверено 16 сентября 2013 г.
  112. ^ «Теорема Райса». Обзор Перла . 4 (3): 23–29. Лето 2008г. и «Perl неразрешим». Обзор Перла . 5 :7–11. Осень 2008 г. , доступно на сайте: Кеглер, Джеффри. «Perl и неразрешимость» . Архивировано из оригинала 17 августа 2009 года . Проверено 4 января 2009 года .
  113. ^ Хиетаниеми, Яркко (1998). «Порты Perl (бинарные дистрибутивы)» . CPAN.org. Архивировано из оригинала 18 апреля 2006 года . Проверено 16 апреля 2006 г.
  114. ^ «Страницы MacPerl» . Бесплатная программа «Прайм-тайм». 1997. Архивировано из оригинала 18 января 2006 года . Проверено 18 января 2006 г.
  115. ^ «Порты Perl (бинарные дистрибутивы)» . КПАН . Архивировано из оригинала 18 апреля 2006 года . Проверено 27 января 2011 г.
  116. ^ «ActivePerl — это Perl для Windows, Mac, Linux, AIX, HP-UX и Solaris» . Программное обеспечение ActiveState . Архивировано из оригинала 31 марта 2016 года . Проверено 9 января 2011 г.
  117. ^ «Использование PPM» . Программное обеспечение ActiveState . Архивировано из оригинала 27 августа 2010 года . Проверено 9 января 2011 г.
  118. ^ «Прощай, PPM, здравствуй, инструмент состояния» . activestate.com . 23 июля 2019 г. Архивировано из оригинала 28 июля 2020 г. Проверено 16 апреля 2020 г.
  119. ^ readme.txt
  120. ^ «Alioth: Игра с тестами компьютерного языка: Информация о проекте» . Алиот . Архивировано из оригинала 25 марта 2013 года . Проверено 13 января 2011 г.
  121. ^ «Какие программы самые быстрые?» . Игра «Бенчмарки компьютерного языка» . Алиот . Архивировано из оригинала 17 мая 2013 года . Проверено 13 января 2011 г.
  122. ^ Лерой, Жан-Луи (1 декабря 2005 г.). «Своевременный старт» . О'Рейли. Архивировано из оригинала 13 июня 2006 года . Проверено 22 мая 2006 г.
  123. ^ Битти, Малкольм и Энаш Адриан (2003). «B::Bytecode Серверная часть байт-кода компилятора Perl» . КПАН . Архивировано из оригинала 30 марта 2021 года . Проверено 16 сентября 2013 г.
  124. ^ Шварц, Рэндал; Фой, Брайан; Феникс, Том (23 июня 2011 г.). Изучение Перла . «О'Рейли Медиа, Инк.». ISBN  978-1-4493-0358-7 .
  125. ^ Штейн, Линкольн; Макихерн, Дуг (1999). Написание модулей Apache с помощью Perl и C: Apache API и Mod_perl . «О'Рейли Медиа, Инк.». ISBN  978-1-56592-567-0 .
  126. ^ Бекман, Стас; Шоле, Эрик (2003). Практичный Mod_perl . «О'Рейли Медиа, Инк.». ISBN  978-0-596-00227-5 .
  127. ^ Ингерсон, Брайан. «Встроенный — Metacpan.org» . КПАН . Архивировано из оригинала 13 июня 2013 года . Проверено 26 января 2011 г.
  128. ^ Гилмор, WJ (2010). Начало PHP и MySQL: от новичка до профессионала, четвертое издание . Апресс. п. 484 . ISBN  978-1-4302-3114-1 .
  129. ^ «Служба поддержки IMDb: Какое программное обеспечение/оборудование вы используете для работы сайта?» . База данных фильмов в Интернете . Архивировано из оригинала 9 марта 2017 года . Проверено 12 февраля 2011 г.
  130. ^ DuckDuckGo обрабатывает большое количество поисковых запросов — 4,5 миллиона запросов в день. https://duckduckgo.com/traffic.html Архивировано 15 февраля 2012 г. в Библиотеки Конгресса . веб-архиве
  131. ^ DuckDuckGo использует Perl https://web.archive.org/web/20101231135106/http://www.gabrielweinberg.com/blog/2009/03/duck-duck-go-architecture.html
  132. ^ «Часто задаваемые вопросы по Perl» . Архивировано из оригинала 6 августа 2019 года . Проверено 6 августа 2019 г. Perl довольно широко используется в Debian. На Perl написаны не только некоторые основные функции, но и более 700 нестабильных пакетов, в названии которых есть Perl (март 2004 г.).
  133. ^ «Книги о Perl — Книга: Обработка данных с помощью Perl» . Перл.орг . Архивировано из оригинала 7 сентября 2011 года . Проверено 30 декабря 2010 г.
  134. ^ Декарт, Аллигатор; Банс, Тим (2000). Программирование Perl DBI: [программирование баз данных на Perl] (1-е изд.). Пекин [ua]: О'Рейли. ISBN  978-1-56592-699-8 .
  135. ^ «Программирование на Perl — принципы языков программирования» . сайты.google.com . Архивировано из оригинала 8 октября 2020 года . Проверено 18 мая 2021 г.
  136. ^ Банс, Тим; Декарт, Аллигатор (4 февраля 2000 г.). Программирование Perl DBI: программирование баз данных на Perl . «О'Рейли Медиа, Инк.». ISBN  978-1-4493-1536-8 .
  137. ^ Бекман, Стас. «Эффективная работа с базами данных под mod_perl» . Архивировано из оригинала 22 августа 2007 года . Проверено 1 сентября 2007 г.
  138. ^ Пачев, Саша (10 апреля 2007 г.). Понимание внутреннего устройства MySQL: обнаружение и улучшение отличной базы данных . «О'Рейли Медиа, Инк.». ISBN  978-0-596-55280-0 .
  139. ^ «Class::DBI — Простая абстракция базы данных — Metacpan.org» . Metacpan.org . Архивировано из оригинала 6 августа 2020 года . Проверено 8 апреля 2020 г.
  140. ^ «Rose::DB::Object — расширяемый, высокопроизводительный объектно-реляционный преобразователь (ORM). — Metacpan.org» . Metacpan.org . Архивировано из оригинала 6 августа 2020 года . Проверено 8 апреля 2020 г.
  141. ^ «Справочник разработчика по запросам T sql» . pdfpremiumfree.com . Проверено 18 мая 2021 г.
  142. ^ Уолл, Ларри (22 мая 2014 г.). «Культура Perl (также известная как первое государство лука)» . Архивировано из оригинала 22 мая 2014 года . Проверено 22 мая 2014 г.
  143. ^ Ларри Уолл. «2-е государство лука» . Архивировано из оригинала 17 июля 2012 года . Проверено 12 октября 2012 г. (Поиск «церковь»)
  144. ^ Рэндал Л. Шварц (2 мая 1999 г.). «Кто такой просто еще один хакер Perl?» . Группа новостей : comp.lang.perl.misc . Usenet:   [электронная почта защищена] . Архивировано из оригинала 8 июля 2012 года . Проверено 5 декабря 2014 г.
  145. ^ Шварц, Рэндал (31 марта 2005 г.). «Канонический ЯФА» . Перлмонкс . Архивировано из оригинала 22 июля 2011 года . Проверено 16 мая 2011 г.
  146. ^ Грег Бэкон (28 мая 1999 г.). «Re: Увеличение значения в срезе» . Группа новостей : comp.lang.perl.misc . Usenet:   [электронная почта защищена] . Архивировано из оригинала 7 июля 2011 года . Проверено 12 июля 2011 г.
  147. ^ Назад, Адам. «RSA в 5 строках Perl» . Архивировано из оригинала 19 января 2011 года . Проверено 10 января 2011 г.
  148. ^ «Код-гольф: что такое код-гольф?» . 29 градусов. 2007. Архивировано из оригинала 13 января 2012 года . Проверено 26 ноября 2018 г.
  149. ^ Галло, Феликс (2003). «Конкурс Zeroth Obfuscated Perl» (PDF) . В Джоне Орванте (ред.). Игры, развлечения и культура Perl: лучшее из журнала Perl . О'Рейли Медиа. Архивировано из оригинала (PDF) 22 ноября 2009 года . Проверено 12 января 2011 г.
  150. ^ «Перловая поэзия» . Перлмонкс . Архивировано из оригинала 27 сентября 2007 года . Проверено 27 января 2011 г.

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: d4cdca0f097cbbe91f341394c09d758d__1722200160
URL1:https://arc.ask3.ru/arc/aa/d4/8d/d4cdca0f097cbbe91f341394c09d758d.html
Заголовок, (Title) документа по адресу, URL1:
Perl - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)