Перв
![]() | |
Парадигма | Многопаригма |
---|---|
Спроектирован | Ларри Уолл |
Разработчик | Ларри Уолл |
Впервые появился | 18 декабря 1987 г [ 1 ] |
Стабильный релиз | |
Preview release | 5.41.3[4] / 29 August 2024
|
Typing discipline | Dynamic |
Implementation language | C |
OS | Cross-platform |
License | Artistic 1.0[5][6] or GNU General Public License version 1 or any later version[7] |
Filename extensions | .plx, .pls, .pl, .pm, .xs, .t, .pod, .cgi, .psgi |
Website | perl.org |
Influenced by | |
AWK, BASIC, C, C++, Lisp, sed, Unix shell[8] | |
Influenced | |
CoffeeScript,[citation needed] Groovy,[citation needed] JavaScript, Julia, LPC, PHP, Python, Raku, Ruby, PowerShell | |
|
PERL -это высокоуровневый , общий характер , интерпретированный , динамический язык программирования . Хотя Perl официально не аббревиатура, [ 9 ] Используются различные Backronyms , в том числе «практическое извлечение и язык отчетности». [ 10 ]
Перл был разработан Ларри Уоллом в 1987 году [ 11 ] как общий язык Unix сценариев, чтобы облегчить обработку отчетов. [ 12 ] [ 11 ] [ 13 ] С тех пор он претерпел много изменений и изменений. Первоначально Perl не был капитализирован, и название было изменено на то, что он был выпущен Perl 4. [ 13 ] Последний релиз - Perl 5, впервые выпущенный в 1994 году. С 2000 по октябрь 2019 года шестая версия Perl была в разработке; Название шестой версии было изменено на Раку . [ 14 ] [ 15 ] Оба языка по -прежнему разрабатываются независимо от разных команд разработки, которые либерально заимствуют идеи друг у друга.
Perl borrows features from other programming languages including C, sh, AWK, and sed.[1] It provides text processing facilities without the arbitrary data-length limits of many contemporary Unix command line tools.[16] Perl is a highly expressive programming language: source code for a given algorithm can be short and highly compressible.[17][18]
Perl gained widespread popularity in the mid-1990s as a CGI scripting language, in part due to its powerful regular expression and string parsing abilities.[19][20][21][22] In addition to CGI, Perl 5 is used for system administration, network programming, finance, bioinformatics, and other applications, such as for graphical user interfaces (GUIs). It has been nicknamed "the Swiss Army chainsaw of scripting languages" because of its flexibility and power.[23] In 1998, it was also referred to as the "duct tape that holds the Internet together", in reference to both its ubiquitous use as a glue language and its perceived inelegance.[24]
Name and logos
[edit]Perl was originally named "Pearl". Wall wanted to give the language a short name with positive connotations. It is also a Christian reference to the Parable of the Pearl from the Gospel of Matthew.[11][25] However, Wall discovered the existing PEARL language before Perl's official release and dropped the "a" from the name.[26][11]
The name is occasionally expanded as a backronym: Practical Extraction and Report Language[27] and Wall's own Pathologically Eclectic Rubbish Lister, which is in the manual page for perl.[28]
Programming Perl, published by O'Reilly Media, features a picture of a dromedary camel on the cover and is commonly called the "Camel Book".[29] This image has become an unofficial symbol of Perl. O'Reilly owns the image as a trademark but licenses it for non-commercial use, requiring only an acknowledgement and a link to www.perl.com. Licensing for commercial use is decided on a case-by-case basis.[30] O'Reilly also provides "Programming Republic of Perl" logos for non-commercial sites and "Powered by Perl" buttons for any site that uses Perl.[30]
The Perl Foundation owns an alternative symbol, an onion, which it licenses to its subsidiaries, Perl Mongers, PerlMonks, Perl.org, and others.[31] The symbol is a visual pun on pearl onion.[32]
History
[edit]Early versions
[edit]Larry Wall began work on Perl in 1987, while employed as a programmer at Unisys;[16] he released version 1.0 on December 18, 1987.[1][11] Wall based early Perl on some methods existing languages used for text manipulation.[11]
Perl 2, released in June 1988,[33][34] featured a better regular expression engine. Perl 3, released in October 1989,[33] added support for binary data streams.[35]
1990s
[edit]Originally, the only documentation for Perl was a single lengthy man page. In 1991, Programming Perl, known to many Perl programmers as the "Camel Book" because of its cover, was published and became the de facto reference for the language.[36] At the same time, the Perl version number was bumped to 4, not to mark a major change in the language but to identify the version that was well documented by the book.[37] Perl 4 was released in March 1991.[33]
Perl 4 went through a series of maintenance releases, culminating in Perl 4.036 in 1993, whereupon Wall abandoned Perl 4 to begin work on Perl 5. Initial design of Perl 5 continued into 1994. The perl5-porters mailing list was established in May 1994 to coordinate work on porting Perl 5 to different platforms. It remains the primary forum for development, maintenance, and porting of Perl 5.[38]
Perl 5.000 was released on October 17, 1994.[39] It was a nearly complete rewrite of the interpreter, and it added many new features to the language, including objects, references, lexical (my) variables, and modules. Importantly, modules provided a mechanism for extending the language without modifying the interpreter. This allowed the core interpreter to stabilize, even as it enabled ordinary Perl programmers to add new language features. Perl 5 has been in active development since then.
Perl 5.001 was released on March 13, 1995. Perl 5.002 was released on February 29, 1996 with the new prototypes feature. This allowed module authors to make subroutines that behaved like Perl builtins. Perl 5.003 was released June 25, 1996, as a security release.[40]
One of the most important events in Perl 5 history took place outside of the language proper and was a consequence of its module support. On October 26, 1995, the Comprehensive Perl Archive Network (CPAN) was established as a repository for the Perl language and Perl modules; as of December 2022[update], it carries over 211,850 modules in 43,865 distributions, written by more than 14,324 authors, and is mirrored worldwide at more than 245 locations.[41]
Perl 5.004 was released on May 15, 1997, and included, among other things, the UNIVERSAL package, giving Perl a base object from which all classes were automatically derived and the ability to require versions of modules. Another significant development was the inclusion of the CGI.pm module,[42] which contributed to Perl's popularity as a CGI scripting language.[43]
Perl 5.004 added support for Microsoft Windows, Plan 9, QNX, and AmigaOS.[42]
Perl 5.005 was released on July 22, 1998. This release included several enhancements to the regex engine, new hooks into the backend through the B::*
modules, the qr//
regex quote operator, a large selection of other new core modules, and added support for several more operating systems, including BeOS.[44]
2000–2020
[edit]Major version[39] | Latest update[45] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Old version
Old version, still maintained Current stable version Latest preview version Future release |
Perl 5.6 was released on March 22, 2000. Major changes included 64-bit support, Unicode string representation, support for files over 2 GiB, and the "our" keyword.[46][47] When developing Perl 5.6, the decision was made to switch the versioning scheme to one more similar to other open source projects; after 5.005_63, the next version became 5.5.640, with plans for development versions to have odd numbers and stable versions to have even numbers.[48]
In 2000, Wall put forth a call for suggestions for a new version of Perl from the community. The process resulted in 361 RFC (Request for Comments) documents that were to be used in guiding development of Perl 6. In 2001,[49] work began on the "Apocalypses" for Perl 6, a series of documents meant to summarize the change requests and present the design of the next generation of Perl. They were presented as a digest of the RFCs, rather than a formal document. At this time, Perl 6 existed only as a description of a language.[citation needed]
Perl 5.8 was first released on July 18, 2002, and further 5.X versions have been released approximately yearly since then. Perl 5.8 improved Unicode support, added a new I/O implementation, added a new thread implementation, improved numeric accuracy, and added several new modules.[50] As of 2013, this version was still the most popular Perl version and was used by Red Hat Linux 5, SUSE Linux 10, Solaris 10, HP-UX 11.31, and AIX 5.
In 2004, work began on the "Synopses" – documents that originally summarized the Apocalypses, but which became the specification for the Perl 6 language. In February 2005, Audrey Tang began work on Pugs, a Perl 6 interpreter written in Haskell.[51] This was the first concerted effort toward making Perl 6 a reality. This effort stalled in 2006.[52]
The Perl On New Internal Engine (PONIE) project existed from 2003 until 2006. It was to be a bridge between Perl 5 and 6, and an effort to rewrite the Perl 5 interpreter to run on the Perl 6 Parrot virtual machine. The goal was to ensure the future of the millions of lines of Perl 5 code at thousands of companies around the world.[53] The PONIE project ended in 2006 and is no longer being actively developed. Some of the improvements made to the Perl 5 interpreter as part of PONIE were folded into that project.[54]
On December 18, 2007, the 20th anniversary of Perl 1.0, Perl 5.10.0 was released. Perl 5.10.0 included notable new features, which brought it closer to Perl 6. These included a switch statement (called "given"/"when"), regular expressions updates, and the smart match operator (~~).[55][56] Around this same time, development began in earnest on another implementation of Perl 6 known as Rakudo Perl, developed in tandem with the Parrot virtual machine. As of November 2009, Rakudo Perl has had regular monthly releases and now is the most complete implementation of Perl 6.
A major change in the development process of Perl 5 occurred with Perl 5.11; the development community has switched to a monthly release cycle of development releases, with a yearly schedule of stable releases. By that plan, bugfix point releases will follow the stable releases every three months.[citation needed]
On April 12, 2010, Perl 5.12.0 was released. Notable core enhancements include new package NAME VERSION
syntax, the yada yada operator (intended to mark placeholder code that is not yet implemented), implicit strictures, full Y2038 compliance, regex conversion overloading, DTrace support, and Unicode 5.2.[57]
On May 14, 2011, Perl 5.14 was released with JSON support built-in.[58]
On May 20, 2012, Perl 5.16 was released. Notable new features include the ability to specify a given version of Perl that one wishes to emulate, allowing users to upgrade their version of Perl, but still run old scripts that would normally be incompatible.[59][failed verification] Perl 5.16 also updates the core to support Unicode 6.1.[59]
On May 18, 2013, Perl 5.18 was released. Notable new features include the new dtrace hooks, lexical subs, more CORE:: subs, overhaul of the hash for security reasons, support for Unicode 6.2.[60]
On May 27, 2014, Perl 5.20 was released. Notable new features include subroutine signatures, hash slices/new slice syntax, postfix dereferencing (experimental), Unicode 6.3, and a rand() function using a consistent random number generator.[61]
Some observers credit the release of Perl 5.10 with the start of the Modern Perl movement.[62] In particular, this phrase describes a style of development that embraces the use of the CPAN, takes advantage of recent developments in the language, and is rigorous about creating high quality code.[63] While the book Modern Perl[64] may be the most visible standard-bearer of this idea, other groups such as the Enlightened Perl Organization[65] have taken up the cause.
In late 2012 and 2013, several projects for alternative implementations for Perl 5 started: Perl5 in Perl6 by the Rakudo Perl team,[66] moe by Stevan Little and friends,[67] p2[68] by the Perl11 team under Reini Urban, gperl by goccy,[69] and rperl, a Kickstarter project led by Will Braswell and affiliated with the Perl11 project.[70]
Perl 6 and Raku
[edit]
At the 2000 Perl Conference, Jon Orwant made a case for a major new language initiative.[72] This led to a decision to begin work on a redesign of the language, to be called Perl 6. Proposals for new language features were solicited from the Perl community at large, which submitted more than 300 RFCs.[73]
Wall spent the next few years digesting the RFCs and synthesizing them into a coherent framework for Perl 6. He presented his design for Perl 6 in a series of documents called "apocalypses" – numbered to correspond to chapters in Programming Perl. As of January 2011[update], the developing specification of Perl 6 was encapsulated in design documents called Synopses – numbered to correspond to Apocalypses.[74]
Thesis work by Bradley M. Kuhn, overseen by Wall, considered the possible use of the Java virtual machine as a runtime for Perl.[75] Kuhn's thesis showed this approach to be problematic. In 2001, it was decided that Perl 6 would run on a cross-language virtual machine called Parrot.
In 2005, Audrey Tang created the Pugs project, an implementation of Perl 6 in Haskell. This acted as, and continues to act as, a test platform for the Perl 6 language (separate from the development of the actual implementation), allowing the language designers to explore. The Pugs project spawned an active Perl/Haskell cross-language community centered around the Libera Chat #raku IRC channel. Many functional programming influences were absorbed by the Perl 6 design team.[76]
In 2012, Perl 6 development was centered primarily on two compilers:[77]
- Rakudo , реализация, работающая на виртуальной машине Parrot и виртуальной машине Java. [ 78 ]
- Niecza , которая нацелена на общее время выполнения языка .
В 2013 году MoARVM («Metamodel в среде выполнения»), виртуальная машина, основанная на C-языке, разработанную главным образом для Rakudo. была объявлена [ 79 ]
В октябре 2019 года Perl 6 был переименован в Раку. [ 80 ]
По состоянию на 2017 год [update] Только реализация Rakudo и MOARVM находятся в активной разработке, и другие виртуальные машины, такие как виртуальная машина Java и JavaScript . поддерживаются [ 81 ]
Perl 7
[ редактировать ]В июне 2020 года Perl 7 был объявлен преемником Perl 5. [ 82 ] Perl 7 должен был изначально основываться на Perl 5.32 с выпуском, ожидаемым в первой половине 2021 года, и раньше выпустить кандидатов. [ 83 ]
Этот план был пересмотрен в мае 2021 года, без какого -либо срока выпуска или версии Perl 5 для использования в качестве указанного базового уровня. [ 84 ] Когда Perl 7 будет выпущен, Perl 5 вступил бы в долгосрочное обслуживание. Поддерживаемые версии Perl 5, однако, будут продолжать получать важные исправления безопасности и исправления ошибок. [ 85 ]
Perl 7 был объявлен 24 июня 2020 года на «Конференции Perl в облаке» в качестве преемника Perl 5. [ 83 ] [ 82 ] На основании Perl 5.32, Perl 7 должен был быть обратно совместимы с современным кодом Perl 5; Perl 5 Code, без паттерной (PRAGMA), требуется добавление заголовка use compat::perl5;
Чтобы оставаться совместимым, но современный код может отбросить часть шаблона.
Однако план по перейти на Perl 7 поднял больше обсуждения, и Руководящий комитет Perl отменил его, чтобы избежать проблем с обратной совместимостью для сценариев, которые не были написаны для прагм и модулей, которые станут дефолтом в Perl 7. Perl 7 будет Выходите только тогда, когда разработчики добавляют достаточно функций, чтобы гарантировать крупное обновление релиза. [ 86 ]
Дизайн
[ редактировать ]Философия
[ редактировать ]По словам Уолла, у Perl есть два лозунга. Первый - это «Есть несколько способов сделать это», обычно известный как tmtowtdi (произносится Тим Тоади ). Как утверждают сторонники этого девиза, эта философия позволяет легко писать краткие заявления. [ 87 ] [ 88 ] [ 89 ]
Второй лозунг - это «простые вещи должны быть легкими, а тяжелые вещи должны быть возможны». [ 16 ]
Дизайн Perl можно понимать как ответ на три широкие тенденции в компьютерной отрасли: падение затрат на оборудование, рост затрат на рабочую силу и улучшение технологии компилятора . Многие более ранние компьютерные языки, такие как Fortran и C, направлены на эффективное использование дорогостоящего компьютерного оборудования. Напротив, Perl был разработан таким образом, чтобы программисты могли писать программы быстрее и легко писать программы. [ 90 ]
Perl имеет много функций, которые облегчают задачу программиста за счет более высоких требований процессора и памяти. К ним относятся автоматическое управление памятью; динамическая набор ; струны, списки и хэши; регулярные выражения; самоанализ ; и eval()
функция Перл следует теории «без встроенных пределов», [ 29 ] Идея, похожая на правило Zero One Infinity .
Стена была обучена лингвистом, а дизайн Perl очень информирован по лингвистическим принципам. Примеры включают в себя кодирование Хаффмана (общие конструкции должны быть короткими), хорошим конечным весом (важная информация должна быть на первом месте) и большая коллекция языковых примитивов . Perl предпочитает языковые конструкции, которые являются кратким и естественным для людей писать, даже если они усложняют интерпретатор Perl. [ 91 ]
Perl Синтаксис отражает идею о том, что «вещи, которые отличаются, должны выглядеть по -другому». [ 92 ] Например, скаляры, массивы и хэши имеют разные ведущие сигилы. Индексы массива и хэш -клавиши используют разные виды брекетов. Строки и регулярные выражения имеют разные стандартные разделители.
Существует широкая практичная склонность как к языку Perl, так и к сообществу и культуре, которые окружают его. Предисловие к программированию Perl начинается: «Perl - это язык для выполнения вашей работы». [ 16 ] Одним из последствий этого является то, что Perl не является аккуратным языком. Он включает в себя множество функций, допустит исключения из своих правил и использует эвристику для разрешения синтаксической неоднозначности. Из -за прощающей природы компилятора иногда трудно найти ошибок. Функциональная документация Perl замечает о поведении варианта встроенных функций в списке и скалярных контекстах, сказав: «В общем, они делают то, что вы хотите, если вы не хотите последовательности». [ 93 ]
Функции
[ редактировать ]Общая структура PERL в целом происходит от C. perl носит процедурный характер, с переменными , выражениями , операторами присваивания , скобами , размерными блоками , контрольными структурами и подпрограмм . [ 94 ]
Perl также принимает функции из программирования оболочки. Все переменные отмечены ведущими сигилами , которые позволяют интерполировать переменные непосредственно в строки . Однако, в отличие от оболочки, Perl использует сигилы во всех доступах к переменным, и, в отличие от большинства других языков программирования, которые используют сигил, сигил не обозначает тип переменной, но тип выражения. Так, например, в то время как массив обозначен сигилом "@" (например, @arrayname
), отдельный член массива обозначается скалярной сигилом "$" (например, $arrayname[3]
) Perl также имеет много встроенных функций, которые предоставляют инструменты, часто используемые в программировании Shell (хотя многие из этих инструментов реализованы программами, внешними по отношению к оболочке), такими как сортировка , и вызов операционной системы . объектов [ Цитация необходима ]
Перл берет хэши («ассоциативные массивы») из Awk и регулярных выражений от SED . Они упрощают многие задачи анализа, управления текстом и управления данными. Общий с LISP является неявной возвратом последнего значения в блоке, и все утверждения также являются выражениями, которые можно использовать в самих выражениях. [ Цитация необходима ]
Perl 5 добавили функции, которые поддерживают сложные структуры данных , первоклассные функции (то есть закрытия как значения), и модель объектно-ориентированного программирования. Они включают в себя ссылки на основе классов , пакеты, рассылка методов и лексически, переменные , а также директивы компилятора (например, strict
Прагма ). Основной дополнительной функцией, представленной с Perl 5, была возможность упаковки кода в качестве многократных модулей. Позже Уолл заявил, что «целое намерение модульной системы Perl 5 состояло в том, чтобы стимулировать рост культуры Perl, а не ядра Perl». [ 95 ]
Все версии Perl делают автоматическое создание данных и автоматическое управление памятью . Интерпретатор знает, какие требования типа и хранения каждого объекта данных в программе; Он выделяет и освобождает их по мере необходимости, используя ссылочный подсчет (поэтому он не может распределить круговые структуры данных без ручного вмешательства). Конверсии юридического типа - например, преобразования из номера в строку - выполняются автоматически во время выполнения ; Незаконные конверсии типа являются фатальными ошибками. [ Цитация необходима ]
Синтаксис
[ редактировать ]Perl называли « Line Noise » и «Язык только только для записи» своих критиков. Рэндал Л. Шварц в первом издании книги « Изучение Perl» , [ 96 ] В первой главе говорится: «Да, иногда Perl выглядит как линейный шум непосвященным, но для опытного программиста Perl, он выглядит как проверенный линейный шум с миссией в жизни». [ 97 ] Он также заявил, что обвинение в том, что Perl является языком только для записи, можно избежать, кодируя с «правильной заботой». [ 97 ] Обзор Perl Обзор документа Perlintro гласит, что имена встроенных «магических» скалярных переменных «похожи на пунктуацию или шум линии». [ 98 ] Тем не менее, английский модуль предоставляет как длинные, так и короткие английские альтернативы. Документ PerlStyle гласит, что шум в регулярных выражениях может быть смягчен, используя /x
модификатор, чтобы добавить пробелы. [ 99 ]
Согласно Perl 6 FAQ , Perl 6 был разработан для смягчения «обычных подозреваемых», которые выявляют претензию «линейного шума» от критиков Perl 5, включая удаление «большинства переменных пунктуации» и дезинфекцию синтаксиса корпорации. Полем [ 100 ] FAQ Perl 6 также гласит, что то, что иногда называют шумом линии Perl, является «фактическим синтаксисом языка», так же, как Герунды и предлоги являются частью английского языка . [ 100 ] В декабре 2012 года в блоге, несмотря на утверждение, что «Rakudo Perl 6 потерпел неудачу и будет продолжать потерпеть неудачу, если не получит некоторый надзор за взрослыми», Chromatic заявил, что дизайн Perl 6 имеет «четко определенную грамматику», «улучшенный тип Система, унифицированная объектная система с интеллектуальной метамоделью, метаоператорами и более четкой системой контекста, которая обеспечивает такие тонкости, как распространенная лень ». [ 101 ] Он также заявил, что «у Perl 6 есть согласованность и последовательность, которой не хватает Perl 5». [ 101 ]
В Perl можно было бы написать «Привет, мир!» Программа как:
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 в текущем каталоге «Роберт»:
$ perl -i.bak -lp -e 's/Bob/Robert/g' *.txt
Выполнение
[ редактировать ]Никакой письменной спецификации или стандарта для языка Perl не существует для версий Perl через Perl 5, и нет никаких планов создавать его для текущей версии Perl. Была только одна реализация интерпретатора, и язык развивался вместе с ним. Этот интерпретатор вместе с его функциональными тестами представляет собой фактическую спецификацию языка. Perl 6, однако, начался со спецификации, [ 102 ] и несколько проектов [ 103 ] Стремитесь реализовать некоторые или все спецификации. [ Цитация необходима ]
Perl реализован как основной интерпретатор, написанный в C, вместе с большой коллекцией модулей, написанных в Perl и C. на 2010 год [update], интерпретатор составляет 150 000 строк C -кода и компилируется для исполняемого файла 1 МБ на типичных архитектурах машины. В качестве альтернативы, интерпретатор может быть составлен в библиотеку ссылок и встроен в другие программы. В распределении насчитывается около 500 модулей, в которых есть 200 000 строк Perl и дополнительные 350 000 строк C -кода (большая часть кода C в модулях состоит из таблиц кодирования символов ). [ Цитация необходима ]
Интерпретатор имеет объектно-ориентированную архитектуру. Все элементы языка Perl - Scalars, массивы, хэши, кодировки, ручки с файлами - представлены в интерпретаторе C. конструкции Операции на этих структурах определяются большой коллекцией макросов , типов и функций; Они составляют Perl C API . PERL API может быть сбит с толку непосвященным, но его точки входа следуют последовательной схеме именования , которая дает руководство тем, кто его использует. [ Цитация необходима ]
Жизнь интерпретатора Perl в целом делится на фазу компиляции и фазу прогона. [ 104 ] В Perl фазы являются основными этапами в жизненном цикле интерпретатора. Каждый интерпретатор проходит каждую фазу только один раз, а фазы следуют в фиксированной последовательности. [ Цитация необходима ]
Большая часть того, что происходит на этапе компиляции Perl, - это компиляция, и большая часть того, что происходит на этапе прогона Perl, является выполнением, но есть значительные исключения. Perl важным использует свою способность выполнять код PERL на этапе компиляции. Perl также задержит компиляцию в фазе прогона. Условия, которые указывают на то, что на самом деле происходит в любой момент, - это время компиляции и время выполнения . Perl находится во время компиляции в большинстве точек во время фазы компиляции, но время компиляции также может быть введено на фазе пробега. Время компиляции для кода в строковом аргументе, переданном eval
Встроенный происходит во время фазы пробега. Perl часто находится во время выполнения во время фазы компиляции и тратит большую часть фазы прогона во время выполнения. Код в BEGIN
Блоки выполняются во время выполнения, но на этапе компиляции.
Во время компиляции интерпретатор анализирует код Perl в синтаксис -дерево . Во время выполнения он выполняет программу, ходя по дереву . Текст проанализируется только один раз, а дерево синтаксиса подвергается оптимизации до его выполнения, так что выполнение является относительно эффективным. Оптимизации времени компиляции на синтаксисном дереве включают постоянное складывание и распространение контекста, но оптимизация глазки . также выполняется [ 105 ]
PERL имеет с полной Тьюрингом грамматику , потому что на наставление может повлиять код времени выполнения, выполненный на этапе компиляции. [ 106 ] Следовательно, Perl не может быть проанализирован прямой комбинацией Lex / Yacc Lexer / Parser . Вместо этого интерпретатор реализует свой собственный Lexer, который координирует с модифицированным анализатором GNU Bison для разрешения неоднозначности на языке. [ Цитация необходима ]
Часто говорят, что «только Perl может проанализировать Perl», [ 107 ] это означает, что только интерпретатор Perl ( perl
) может проанализировать язык Perl ( Perl ), но даже это, в целом, это не так. Поскольку интерпретатор PERL может имитировать машину Тьюринга во время фазы компиляции, ему необходимо решить проблему остановки , чтобы завершить анализ в каждом случае. Это давний результат, что проблема с остановкой нерешима, и поэтому даже не всегда не может проанализировать Perl. Perl делает необычный выбор, предоставляя пользователю доступ к полному программированию в собственной фазе компиляции. Стоимость теоретической чистоты высока, но практические неудобства, кажется, редки. [ 108 ]
Другие программы, которые предпринимают для анализа PERL, таких как анализаторы исходного кода и автонецентры , должны бороться не только с неоднозначными синтаксическими конструкциями , но и с неразрешимостью PERL-диапазона в общем случае. Проект PPI Адама Кеннеди был сосредоточен на анализе кода Perl в качестве документа (сохраняя свою целостность в качестве документа), вместо того, чтобы анализировать Perl в качестве исполняемого кода (который даже не может сделать сам Perl). Это был Кеннеди, который сначала предположил, что «анализ Perl страдает от« проблемы остановки »,», [ 109 ] что позже было доказано. [ 110 ]
PERL распределен с более чем 250 000 функциональных тестов для основного языка Perl и более 250 000 функциональных тестов для основных модулей. Они работают как часть нормального процесса сборки и широко используют интерпретатор и его основные модули. Разработчики Perl полагаются на функциональные тесты, чтобы убедиться, что изменения в интерпретаторе не вводят программные ошибки ; Кроме того, пользователи Perl, которые видят, что интерпретатор проходит свои функциональные тесты в своей системе, могут иметь высокую степень уверенности в том, что он работает должным образом. [ Цитация необходима ]
Порты
[ редактировать ]Perl имеет двойную лицензию в соответствии с художественной лицензией 1.0 [ 5 ] [ 6 ] и общая публичная лицензия GNU . [ 7 ] Распределения доступны для большинства операционных систем . Он особенно распространен в системах UNIX и Unix , но он был перенесен на большинство современных (и многих устаревших) платформ. Только с шестью [ Цитация необходима ] Сообщаемые исключения, Perl может быть скомпилирован из исходного кода на всех Posix -compliant, или иначе, совместимых с UNIX, платформами. [ 111 ]
Из -за необычных изменений, необходимых для классической среды Mac OS , специальный порт, называемый Macperl, был отправлен независимо. [ 112 ]
Комплексная сеть Archive Perl содержит полный список поддерживаемых платформ со ссылками на распределения, доступные на каждом. [ 113 ] CPAN также является источником общедоступных модулей Perl, которые не являются частью основного распределения Perl. [ Цитация необходима ]
ActivePerl-это распределение с закрытым исходным кодом от Activestate , которое имеет регулярные выпуски, которые отслеживают выбросы ядра PERL. [ 114 ] Ранее распределение включало менеджер пакетов PERL (PPM), [ 115 ] популярный инструмент для установки, удаления, обновления и управления использованием общих модулей Perl; Однако этот инструмент был прекращен с ActivePerl 5.28. [ 116 ] Также включен PerlScript , двигатель хоста сценария Windows (WSH), реализующий язык Perl. Visual Perl - это инструмент Activestate, который добавляет Perl в набор Visual Studio .net Development. VBScript AWK -Perl Converter, Perl Compiler для Windows и преобразователи и SED в Perl также были произведены этой компанией и включены в CD ActivESTATE для Windows , который включает все их распределения плюс IDE Komodo и все Но первый в варианте Unix -Linux - Posix его в 2002 году и после. [ 117 ]
Производительность
[ редактировать ]В игре компьютерного языка сравнивается производительность реализаций типичных задач программирования на нескольких языках программирования. [ 118 ] Представленные реализации Perl обычно работают в направлении высокого уровня спектра использования памяти и дают различные результаты скорости. Производительность Perl в игре Clargmarks типична для интерпретируемых языков. [ 119 ]
Большие программы Perl начинаются медленнее, чем аналогичные программы на скомпилированных языках, потому что Perl должен компилировать источник каждый раз, когда он работает. В разговоре на конференции YAPC :: Europe 2005 и в последующей статье «Своевременное начало» Жан-Луис Леруа обнаружил, что его программы Perl потребовалось гораздо больше времени, чем ожидалось, потому что интерпретатор Perl потратил значительное время на поиске модулей в пределах более широких Включите путь. [ 120 ] В отличие от Java, Python и Ruby, Perl имеет только экспериментальную поддержку для предварительной компиляции. [ 121 ] Поэтому программы PERL выплачивают это накладное штраф за каждую исполнение. Фаза прогона типичных программ достаточно длинная, чтобы амортизированное время запуска не существенное, но показатели, которые измеряют очень короткое время выполнения, вероятно, будут искажены из -за этого накладных расходов. [ 122 ]
Для улучшения этой ситуации был введен ряд инструментов. Первым таким инструментом был Apache Mod_perl , который стремился решить одну из самых коммерческих причин, по которой небольшие программы Perl были быстро вызваны: разработка CGI веб- . ActivePerl , через Microsoft ISAPI , обеспечивает аналогичные улучшения производительности. [ 123 ]
После составления кода Perl на этапе выполнения наблюдается дополнительные накладные расходы, которые обычно не присутствуют для программ, написанных на скомпилированных языках, таких как C или C ++. Примеры таких накладных расходов включают интерпретацию байт-кодов , управление памятью с подсчета ссылок и динамическую проверку типов. [ 124 ]
Наиболее важные процедуры могут быть записаны на других языках (таких как C ), которые могут быть подключены к PERL через простые встроенные модули или более сложный, но гибкий механизм XS . [ 125 ]
Приложения
[ редактировать ]Perl имеет много и различных приложений, составляемых доступностью многих стандартных и сторонних модулей.
Perl в основном использовался для написания CGI сценариев : крупные проекты, написанные в Perl, включают CPanel , Slash , Bugzilla , RT , Twiki и Movable Type ; Веб-сайты с высоким трафиком, которые широко используют Perl, включают Priceline.com , Craigslist , [ 126 ] Imdb , [ 127 ] LiveJournal , DuckDuckgo , [ 128 ] [ 129 ] Slashdot и Ticketmaster . Это также необязательный компонент популярного технологического стека LAMP для веб -разработки , вместо PHP или Python . Perl широко используется в качестве языка системного программирования в распределении Debian Linux . [ 130 ]
Perl часто используется в качестве клейкого языка , связывая системы и интерфейсы, которые не были специально разработаны для взаимодействия, и для « Munging», Munging », [ 131 ] то есть преобразование или обработка больших объемов данных для таких задач, как создание отчетов. Эти сильные стороны связаны тесно. Комбинация делает Perl популярным универсальным языком для системных администраторов , особенно потому, что короткие программы, часто называемые « программами с одной линией », могут быть введены и запускаться в одной командной строке . [ Цитация необходима ]
Код Perl может быть сделан портативным по Windows и Unix; Такой код часто используется поставщиками программного обеспечения (как коммерческих готовых (COTS), так и на заказ) для упрощения упаковки и технического обслуживания программного обеспечения и развертывания. [ Цитация необходима ]
Perl/TK и Wxperl обычно используются для добавления графических пользовательских интерфейсов в сценарии Perl.
Возможности обработки текста Perl можно использовать для создания SQL запросов ; Массивы, хэши и автоматическое управление памятью позволяют легко собирать и обрабатывать возвращенные данные. Например, в Perl DBI интерфейсе программирования приложения от Тима Бунсе (API) аргументы в API могут быть текстом запросов SQL; Таким образом, можно программировать на нескольких языках одновременно (например, для создания веб -страницы с использованием HTML , JavaScript и SQL в документе здесь ). Использование интерполяции переменной perl для программной настройки каждого из запросов SQL и спецификации массивов PERL или хэшей в качестве структур для программного обеспечения полученных наборов данных из каждого запроса SQL позволяет высокоуровневый механизм для обработки больших количеств данных для постобработки по подпрограмме Perl. [ 132 ]
В ранних версиях PERL интерфейсы базы данных были созданы путем перемещения интерпретатора с клиентской библиотекой баз данных. Это было достаточно сложно, чтобы это было сделано только для нескольких наиболее важных и наиболее широко используемых баз данных, и это ограничило полученные perl
Исполняем, чтобы использовать только один интерфейс базы данных за раз. [ 133 ]
В Perl 5 интерфейсы базы данных реализованы модулями Perl DBI. Модуль DBI (интерфейс базы данных) представляет один, независимый от базы данных интерфейс для приложений PERL, в то время как модули DBD (драйвер базы данных) обрабатывают детали доступа около 50 различных баз данных; Есть драйверы DBD для большинства баз данных ANSI SQL . [ 134 ]
DBI обеспечивает кэширование для ручек и запросов базы данных, что может значительно повысить производительность в долгоживущих средах выполнения, таких как MOD_PERL , [ 135 ] Помогая системы с большим объемом предотвратить нагрузки, как в эффекте Slashdot . [ 136 ]
В современных приложениях PERL, особенно в тех, которые написаны с использованием веб-структур, таких как катализатор , модуль DBI часто используется косвенно через объектно-релационные картины, такие как DBIX :: Class , Class :: DBI [ 137 ] или роза :: db :: Объект [ 138 ] Это генерирует запросы SQL и прозрачно обрабатывает данные к автору приложения. [ 139 ]
Сообщество
[ редактировать ]Культура и сообщество Перла развивались вместе с самим языком. Usenet был первым общественным местом, в котором был представлен Perl, но в течение своей эволюции сообщество Perl было сформировано ростом расширения услуг в Интернете, включая введение Всемирной паутины. Сообщество, которое окружает Perl, было, на самом деле, темой первого разговора Уолла «Состояние лука». [ 140 ]
Состояние лука -это название для ежегодных резюме в стиле Wall's Persing of Perl и его сообщества. Они характеризуются его отличительным юмором, используя ссылки на культуру Перла, более широкую хакерскую культуру, лингвистический фон Уолла, иногда его семейную жизнь и иногда даже его христианское происхождение. [ 141 ] Каждый разговор впервые проводится на различных конференциях Perl и в конечном итоге также опубликована в Интернете.
В сообщении по электронной почте, USENET и доскам сообщений «Просто еще один хакера Perl» (JAPH) - это общая тенденция, созданная Рэндалом Л. Шварцем , одним из самых ранних профессиональных тренеров Perl. [ 142 ] На языке культуры Perl программисты Perl известны как хакеры Perl, и из этого получается практика написания коротких программ, чтобы распечатать фразу «просто еще один хакер Perl». В духе первоначальной концепции эти программы умеренно запутаны и достаточно короткие, чтобы вписаться в подпись электронного письма или сообщения USENET. «Канонический» JAPH, разработанный Schwartz, включает запятую в конце, хотя это часто пропускается. [ 143 ]
Perl "Golf" - это времяпрепровождение по уменьшению количества персонажей (ключевые «инсульты»), используемых в программе Perl, до минимума, во многом так же, как игроки для гольфа стремятся сделать как можно меньше выстрелов в раунде. Первое использование фразы [ 144 ] Подчеркнул разницу между пешеходным кодом, предназначенным для обучения новичков и взломам, которые могут развлечь опытных программистов PERL, примером того, что последнее является JAPHS , который уже использовался в подписях в публикациях Usenet и в других местах. Подобные трюки были неназванным времяпрепровождением в языке APL в предыдущие десятилетия. Использование Perl для написания программы, которая выполнила шифрование RSA, вызвало широкий и практический интерес к этому времяпрепровождению. [ 145 ] В последующие годы термин « кодовый гольф » был применен к занятию на других языках. [ 146 ] Апокалипсис Perl Golf был проведен на конференции Perl 4.0 в Монтерее, штат Калифорния, в июле 2000 года.
Как и в C, запутанные соревнования кодекса были хорошо известным времяпрепровождением в конце 1990 -х годов. Запутанное конкурс Perl был конкурсом Perl Journal с 1996 по 2000 год, который сделал арх добродетель синтаксической гибкости Perl. Награды были вручены за такие категории, как «самые мощные»-программы, которые сделали эффективное использование пространства-и «лучшая четырехстрочная подпись» для программ, которые вписываются в четыре строки из 76 символов в стиле блока подписи USENET . [ 147 ]
Perl Poetry - это практика написания стихов, которые могут быть составлены в качестве законного кодекса Perl, например, произведения, известная как « Black Perl ». Поэзия Perl стала возможной благодаря большому количеству английских слов, которые используются на языке Perl. Новые стихи регулярно представляются сообществу в Perlmonks . [ 148 ]
Смотрите также
[ редактировать ]Ссылки
[ редактировать ]- ^ Jump up to: а беременный в Эштон, Элейн (1999). «Сроки Perl и его культуры (v3.0_0505)» . Архивировано с оригинала 11 января 2013 года . Получено 12 марта 2004 года .
- ^ «Perl v5.40.0 теперь доступен» . www.nntp.perl.org . Получено 11 июня 2024 года .
- ^ «Perl 5.34.3, Perl 5.36.3 и Perl 5.38.2 теперь доступны» . www.nntp.perl.org . Получено 5 декабря 2023 года .
- ^ «Объявление о выпуске для Perl v5.41.3» . www.nntp.perl.org . Получено 29 августа 2024 года .
- ^ Jump up to: а беременный «Художественная лицензия» - dev.perl.org » . dev.perl.org . Архивировано из оригинала 24 июля 2018 года . Получено 24 июня 2016 года .
- ^ Jump up to: а беременный Художественный архив 25 июля 2018 года, в The Wayback Machine - файл в репозитории Perl 5 GIT
- ^ Jump up to: а беременный «Лицензирование Perl» . dev.perl.org. Архивировано из оригинала 22 января 2011 года . Получено 8 января 2011 года .
- ^ Стена, Ларри (12 декабря 2007 г.). «Программирование сложно, давайте пойдем сценарием ...» Архивировал из оригинала 28 июля 2017 года . Получено 14 апреля 2019 года .
У всех языковых дизайнеров есть свои случайные идиосинкрасии. Я просто лучше в этом, чем большинство.
- ^ Лапворт, Лео. «Общие вопросы о Перл» . Perl FAQ . Perl.org. Архивировано из оригинала 28 мая 2013 года . Получено 24 февраля 2012 года .
- ^ «Perl (1): практическая извлечение/язык отчетов - страница Linux Man» . Linux.die.net. Архивировано из оригинала 3 июня 2013 года . Получено 23 июля 2013 года .
- ^ Jump up to: а беременный в дюймовый и фон Лонг, Тони. «18 декабря 1987 года: Perl упрощает лабиринт, который является языком программирования» . Проводной . ISSN 1059-1028 . Получено 14 февраля 2023 года .
- ^ Шеппард, Даг (16 октября 2000 г.). «Введение новичка в Perl» . dev.perl.org. Архивировано из оригинала 5 июня 2011 года . Получено 8 января 2011 года .
- ^ Jump up to: а беременный «Ларри Уолл, гуру Перла» . Linux Journal . Получено 30 августа 2023 года .
- ^ "О Перл" . Perl.org. Архивировано с оригинала 6 ноября 2015 года . Получено 20 апреля 2013 года .
«Perl» - это семья языков », Perl 6» является частью семьи, но это отдельный язык, который имеет свою собственную команду разработки. Его существование не оказывает существенного влияния на продолжающееся развитие «Perl 5».
- ^ «Путь к Раку» . GitHub. Архивировано с оригинала 12 ноября 2020 года . Получено 14 января 2021 года .
Этот документ описывает шаги, которые должны быть предприняты для повторного переименования Perl 6 в раку
- ^ Jump up to: а беременный в дюймовый Стена, Ларри ; Кристиансен, Том; Орвант, Джон (июль 2000 г.). Программирование Perl, третье издание . О'Рейли СМИ . ISBN 978-0-596-00027-1 .
- ^ «Как измеряются программы» . Игра в компьютерном языке, Debian.net . Архивировано из оригинала 12 июля 2020 года . Получено 5 октября 2020 года .
- ^ «RSA в 3 строках Perl - All2.com» . Все2.com . Архивировано из оригинала 8 октября 2020 года . Получено 5 октября 2020 года .
- ^ «Оценки языка» . Архивировано с оригинала 10 марта 2015 года . Получено 30 января 2015 года .
Самая сильная точка Perl-это чрезвычайно мощные встроенные средства для обработки текстовых форматов данных, ориентированных на схему,; Это непревзойдено в этом.
- ^ "Вы использовали Perl, чтобы написать что?!" Полем 24 января 2008 года. Архивировано с оригинала 4 февраля 2015 года . Получено 4 февраля 2015 года .
Perl всегда был языком для любой задачи, которая включает в себя ввод с шаблонами
- ^ «Важность перла» . Архивировано из оригинала 2 февраля 2015 года . Получено 4 февраля 2015 года .
Непревзойденная способность Перла обрабатывать текст ...
- ^ Смит, Родерик В. (21 июня 2002 г.). Усовершенствованная сеть Linux . Аддисон-Уэсли Профессионал. п. 594 . ISBN 978-0-201-77423-8 .
- ^ Шеппард, Даг (16 октября 2000 г.). «Введение новичка в Perl» . О'Рейли СМИ . Архивировано из оригинала 4 июня 2008 года . Получено 27 июля 2008 года .
- ^ Леонард, Эндрю. «Радость Перла» . Salon.com . Архивировано из оригинала 6 июля 2012 года . Получено 5 июня 2012 года .
- ^ «Сценарии на палубе Лидо» . Проводной . 7 марта 2016 года. Архивировано с оригинала 7 марта 2016 года . Получено 14 февраля 2023 года .
- ^ Ричардсон, Марджори (1 мая 1999 г.). «Ларри Уолл, гуру Перла» . Linux Journal . Архивировано из оригинала 20 июля 2013 года . Получено 3 января 2011 года .
- ^ Шварц, Рэндал ; Фой, Брайан ; Феникс, Том (16 июня 2011 г.). Обучение Perl . O'Reilly Media, Inc. с. 4 ISBN 978-1449313142 Полем
Иногда Perl называют «практической добычей и языком сообщать о языке», хотя его также называют «патологически эклектичным мусором», среди других расширений. На самом деле это Backrony, а не аббревиатура, так как Ларри Уолл, создатель Перла, сначала придумал имя и расширение позже. Вот почему «Perl» не во всех матчах. Нет смысла утверждать, что расширение верно: Ларри одобряет оба.
- ^ Стена, Ларри . «Perl - интерпретатор языка Perl» . Perl 5 Версия 12.2 Документация . Архивировано из оригинала 1 июля 2013 года . Получено 26 января 2011 года .
- ^ Jump up to: а беременный Шварц, Рэндал Л ; Феникс, Том; Фой, Брайан (6 декабря 2007 г.). Обучение Perl, третье издание . О'Рейли СМИ. ISBN 978-0-596-00132-2 .
- ^ Jump up to: а беременный «Использование верблюда Perl и информация о товарной марке» . О'Рейли СМИ . Архивировано с оригинала 25 апреля 2018 года . Получено 9 января 2011 года .
- ^ «Торговая марка Perl» . Фонд Perl . Архивировано из оригинала 3 мая 2011 года . Получено 9 января 2011 года .
- ^ Гиллмор, Дэн (25 октября 1998 г.). "Республика Перла" . Чикаго Трибьюн . Архивировано из оригинала 30 апреля 2011 года . Получено 10 января 2011 года .
- ^ Jump up to: а беременный в Калита, Югал (декабрь 2003 г.). На Perl: Perl для студентов и профессионалов . Universal-Publishers. ISBN 978-1-58112-550-4 .
- ^ "Perl Culture" . docstore.mik.ua . Получено 16 марта 2023 года .
- ^ Холлоуэй, Рут. «Perl исполняется 30 лет, а его сообщество продолжает процветать» . Opensource.com . Получено 23 июня 2023 года .
- ^ «Программирование Perl, 3 -е издание [Book]» . www.oreilly.com . Получено 11 апреля 2023 года .
- ^ «Perlhist - The Perl History Records - браузер Perldoc» . Perldoc.perl.org . Получено 28 июля 2023 года .
- ^ "Perl.perl5.porters Archive" . Perl.org. Архивировано из оригинала 1 мая 2011 года . Получено 13 января 2011 года .
- ^ Jump up to: а беременный «Перлхист: исторические записи Perl» . Perl 5 Версия 12.2 Документация . Perldoc.perl.org. Архивировано из оригинала 13 января 2011 года . Получено 21 января 2011 года .
- ^ «Perl: определение, история и факты» . Britannica.com . Получено 15 июня 2022 года .
- ^ "CPAN" . CPAN . Архивировано из оригинала 3 октября 2019 года . Получено 19 декабря 2022 года .
- ^ Jump up to: а беременный «Perl5004delta - что нового для Perl5.004» . Perl 5 Версия 12.2 Документация . Perldoc.perl.org. Архивировано из оригинала 27 февраля 2011 года . Получено 8 января 2011 года .
- ^ Патерхан, Натан; Зивер, Эллен; Spainhour, Stephen (2002). Perl в двух словах, второе издание . О'Рейли СМИ . ISBN 978-0-596-00241-1 .
- ^ «Perl5005Delta - что нового для Perl5.005» . Perl 5 Версия 12.2 Документация . Perldoc.perl.org. Архивировано из оригинала 3 февраля 2011 года . Получено 21 января 2011 года .
- ^ "Perl Source" . cpan.org . Получено 26 ноября 2023 года .
- ^ «Perl56delta - что нового для Perl v5.6.0» . Perl 5 Версия 12.2 Документация . Perldoc.perl.org. Архивировано из оригинала 2 февраля 2011 года . Получено 21 января 2011 года .
- ^ «Perl56delta - что нового для Perl v5.6.x» . Perl 5 Версия 12.2 Документация . Perldoc.perl.org. Архивировано из оригинала 18 ноября 2010 года . Получено 21 января 2011 года .
- ^ «Перл | определение, история и факты | Британская» . www.britannica.com . Получено 15 июня 2022 года .
- ^ Стена, Ларри. «Апокалипсис 1: Уродливое, плохое и хорошее» . Архивировано с оригинала 23 ноября 2010 года . Получено 8 января 2011 года .
- ^ «Perl58delta - что нового для Perl v5.8.0» . Perl 5 Версия 12.2 Документация . Perldoc.perl.org. Архивировано из оригинала 21 ноября 2010 года . Получено 21 января 2011 года .
- ^ «План для мопсов» . О'Рейли СМИ . 3 марта 2005 года. Архивировано с оригинала 8 сентября 2012 года . Получено 27 января 2011 года .
- ^ Тан, Одри (21 апреля 2010 г.). «Re: Как реализовать Perl 6 за десять лет» . Перлмоны . Архивировано из оригинала 11 мая 2011 года . Получено 3 января 2011 года .
- ^ Бродвелл, Джефф (8 августа 2005 г.), Оскан 4.4: Внутри Пони, мост от Perl 5 до Perl 6 , блог O'Reilly Onlamp, архивированный из оригинала 14 марта 2012 года , полученного 27 июня 2016 г.
- ^ Винсент, Джесси (23 августа 2006 г.), Пони был выставлен на пастбище , фонд Perl, архивировав с оригинала 27 июня 2009 года , полученная 15 января 2019 г.
- ^ «Perl5100delta - что нового для Perl 5.10.0» . Perl 5 Версия 12.2 Документация . Perldoc.perl.org. Архивировано из оригинала 21 декабря 2010 года . Получено 8 января 2011 года .
- ^ "Перлсин - синтаксис Perl" . Perl 5 Версия 12.2 Документация . Perldoc.perl.org. Архивировано из оригинала 26 августа 2013 года . Получено 21 января 2011 года .
- ^ «Perl5120Delta - что нового для Perl v5.12.0» . Perl 5 Версия 12.2 Документация . Perldoc.perl.org. Архивировано из оригинала 4 января 2011 года . Получено 8 января 2011 года .
- ^ «Perl5140delta - что нового для Perl v5.14.0 - metacpan.org» . Metacpan.org . Архивировано из оригинала 25 июля 2018 года . Получено 22 июля 2017 года .
- ^ Jump up to: а беременный «Perl5160delta - что нового для Perl v5.16.0» . Perldoc.perl.org . Получено 21 мая 2012 года .
- ^ «Perl5180delta - что нового для Perl v5.18.0 - язык программирования Perl» . Perl 5 Версия 18.0 Документация . Metacpan.org. Архивировано с оригинала 29 октября 2013 года . Получено 27 октября 2013 года .
- ^ «Perl5200Delta - что нового для Perl v5.20.0 - Perl -язык программирования» . Perl 5 Версия 20.0 Документация . Metacpan.org. Архивировано из оригинала 27 мая 2014 года . Получено 27 мая 2014 года .
- ^ Вехи в ренессансе Perl - современное программирование Perl, архивное 27 октября 2012 года, на машине Wayback . ModernPerlBooks.com. Получено на 2013-07-17.
- ^ Предисловие (Modern Perl 2011-2012) Архивировано 28 сентября 2012 года, на The Wayback Machine . ModernPerlBooks.com. Получено на 2013-07-17.
- ^ Modern Perl 2011-2012 Edition от Chromatic | Onyx Neon Press Archived 22 декабря 2011 г., на The Wayback Machine . Onyxneon.com. Получено на 2013-07-17.
- ^ «Просветленный Перл» . Просвещенный перл . Архивировано из оригинала 5 февраля 2014 года . Получено 28 сентября 2012 года .
- ^ «YAPC :: NA 2013 - 3–5 июня, Остин, Техас» . Yapcna.org. 4 июня 2013 года. Архивировано с оригинала 22 июня 2013 года . Получено 11 апреля 2014 года .
- ^ Литтл, Стеван (8 февраля 2013 г.). «Что такое Мо (разъяснение) | Стеван Литтл» . Blogs.perl.org. Архивировано из оригинала 19 декабря 2013 года . Получено 11 апреля 2014 года .
- ^ «P2 на зелье» . Perl11.org. 7 февраля 2004 года. Архивировано с оригинала 24 сентября 2013 года . Получено 11 апреля 2014 года .
- ^ "GOCCY/GPERL 路 GitHub" . Github.com. Архивировано из оригинала 23 февраля 2015 года . Получено 11 апреля 2014 года .
- ^ "rperl" . Rperl.org. Архивировано с оригинала 18 октября 2014 года . Получено 11 августа 2014 года .
- ^ "Перл 6" . Perl 6 Project. Архивировано из оригинала 21 февраля 2011 года . Получено 27 февраля 2011 года .
- ^ Турингтон, Натан. «Транскрипция разговора Ларри» . nntp.perl.org. Архивировано из оригинала 1 мая 2011 года . Получено 25 января 2011 года .
- ^ «Perl6 - будущее Perl» . www.java-samples.com . Получено 18 мая 2021 года .
- ^ «Официальная документация Perl 6» . Perl 6 Project. Архивировано из оригинала 31 августа 2009 года . Получено 25 января 2011 года .
- ^ Кун, Брэдли М. (январь 2001 г.). Соображения по портированию Perl на виртуальную машину Java (тезис MS). Университет Цинциннати. Архивировано из оригинала 21 марта 2008 года . Получено 28 июня 2008 года .
- ^ Chromatic (2015). Современный Perl . Прагматическая книжная полка. ISBN 978-1-68050-088-2 .
- ^ «Сравнение функций компиляторов Perl 6» . Архивировано из оригинала 11 августа 2017 года . Получено 28 марта 2012 года .
- ^ Уортингтон, Джонатан (15 июля 2013 г.). «Новости Rakudo JVM: больше тестов, плюс прототипы поток и обещания» . 6 кг . Архивировано из оригинала 5 октября 2013 года . Получено 24 июля 2013 года .
- ^ Уортингтон, Джонатан (31 мая 2013 г.). "Moarvm: виртуальная машина для NQP и Rakudo" . 6 кг . Архивировано с оригинала 9 июля 2013 года . Получено 24 июля 2013 года .
- ^ "rename-lwn" . Архивировано с оригинала 17 октября 2019 года . Получено 10 ноября 2019 года .
- ^ "Ракудо/Ракудо - GitHub" . Github.com. Архивировано с оригинала 29 июля 2017 года . Получено 21 сентября 2013 года .
- ^ Jump up to: а беременный «Perl 7 объявил на конференции Perl в облаке» . Perlfoundation.org. 24 июня 2020 года. Архивировано с оригинала 26 июня 2020 года . Получено 24 июня 2020 года .
- ^ Jump up to: а беременный «Объявление Perl 7» . perl.com. 24 июня 2020 года. Архивировано с оригинала 24 июня 2020 года . Получено 24 июня 2020 года .
- ^ Кларк, Николас (9 мая 2021 г.). «Заседание руководящего совета № 019 2021-05-06» . www.nntp.perl.org . Архивировано из оригинала 18 мая 2021 года . Получено 17 мая 2021 года .
Остается план, что будет выпуклость Perl 7, но не сразу после выпуска 5.34.0. ... Мы не думаем, что можем доставить [Perl 7] за 12 месяцев.
- ^ Подготовка к Perl 7d . LeanPub.com. 24 июня 2020 года. Архивировано с оригинала 25 июня 2020 года . Получено 24 июня 2020 года .
- ^ ПЕРЛ Руководящий совет. "Что случилось с Perl 7?" Полем blogs.perl.org . Получено 7 июля 2022 года .
- ^ Ричардсон, Марджори. «Ларри Уолл, гуру Perl | Linux Journal» . www.linuxjournal.com . Linux Journal . Получено 16 января 2023 года .
- ^ Шварц, Алан (декабрь 1998 г.). «Учебник: Perl, психологически эффективный язык переформатирования» . Методы исследования поведения, инструменты и компьютеры . 30 (4): 605–609. doi : 10.3758/bf03209477 . ISSN 0743-3808 . S2CID 61028367 .
- ^ Гилберт, Джеймс Гр (март 2002 г.). «Как стать головастикой программирования» . Nature Biotechnology . 20 (3): 221. doi : 10.1038/nbt0302-221 . ISSN 1087-0156 . S2CID 38728402 .
- ^ «Падение Perl, самый многообещающий язык в Интернете» . Fastcompany . 13 февраля 2014 года.
- ^ Стена, Ларри. «Perl - Perl 5 Language Interprerer - Brower Perldoc» . Perldoc.perl.org . Получено 24 июня 2021 года .
- ^ Стена, Ларри (1 марта 1997 г.). "Почему искусство, ты?" Полем Linux Journal . Архивировано из оригинала 9 декабря 2010 года . Получено 13 марта 2011 года .
- ^ «Perlfunc - Perl встроенные функции» . Perl 5 Версия 12.2 Документация . Perldoc.perl.org. Архивировано из оригинала 6 января 2011 года . Получено 10 января 2011 года .
- ^ Нагпал, Д.П. (2010). Технология веб -дизайна . Индия: С. Чанд. п. 700. ISBN 978-8121927635 .
- ^ «Название неизвестно». 10 мая 1997 года. Usenet: [Электронная почта защищена] . [ мертвая ссылка ]
- ^ «Обновление разработчика». Обновление разработчика доктора Добба . 2 Миллер-Фриман. 1995.
- ^ Jump up to: а беременный Шварц, Рэндал Л. (1993). Обучение Perl . O'Reilly & Associates. Bibcode : 1993lepe.book ..... s .
- ^ "Перлинтро" . Perl 5 Версия 18.0 Документация . Perl 5 портера и Perldoc.perl.org. Архивировано с оригинала 9 января 2011 года . Получено 30 июня 2013 года .
- ^ "Перлстил" . Perl 5 Версия 18.0 Документация . Perl 5 портера и Perldoc.perl.org. Архивировано с оригинала 26 июня 2013 года . Получено 30 июня 2013 года .
- ^ Jump up to: а беременный "Perl 6 FAQ" . Perl 6 Project. Архивировано из оригинала 1 июля 2013 года . Получено 30 июня 2013 года .
- ^ Jump up to: а беременный Хромат (31 декабря 2012 г.). «Реализация Perl 5 против Perl 6» . Архивировано с оригинала 29 июля 2013 года . Получено 30 июня 2013 года .
- ^ "Perl 6 спецификация" . Perl 6 Project. Архивировано из оригинала 2 декабря 2009 года . Получено 27 января 2011 года .
- ^ «Perl 6 компиляторы» . Perl 6 Project. Архивировано из оригинала 2 декабря 2009 года . Получено 27 января 2011 года .
- ^ Описание интерпретатора Perl 5 можно найти в программировании Perl , 3 -е изд., Глава 18. См. В частности, стр. 467, которая тщательно различает фазу выполнения и фазу компиляции от времени выполнения и времени компиляции . Perl "Time" и "Phase" часто сбиваются с толку.
- ^ «Perlguts - Введение в браузер Perl API - Perldoc» . Perldoc.perl.org . Получено 24 января 2022 года .
- ^ Шварц, Рэндал . «О разбирательном порядке» . Архивировано из оригинала 27 сентября 2007 года . Получено 3 января 2007 года .
- ^ «Журнал Perl #19/9.26» (PDF) . О'Рейли СМИ . Получено 4 февраля 2011 года . [ Постоянная мертвая ссылка ]
- ^ Кеглер, Джеффри (7 октября 2011 г.). "Perl и Parsing 11: Все программы Perl разрабатываются?" Полем Получено 25 октября 2022 года .
... Кажется, мы абсолютно ничего не сдаем. Никто никогда не мог показать практическую недостатку
- ^ Кеннеди, Адам (2006). «PPI - parse, анализировать и манипулировать Perl (без Perl)» . CPAN . Архивировано из оригинала 3 сентября 2013 года . Получено 16 сентября 2013 года .
- ^ «Теорема Райса». Перл обзор . 4 (3): 23–29. Лето 2008. И «Перл неразрешимый». Перл обзор . 5 : 7–11. Осень 2008. , Доступно в Интернете на Кеглер, Джеффри. «Перл и неразрешимость» . Архивировано из оригинала 17 августа 2009 года . Получено 4 января 2009 г.
- ^ Hietaniemi, Jarkko (1998). «Perl Ports (бинарные распределения)» . Cpan.org. Архивировано из оригинала 18 апреля 2006 года . Получено 16 апреля 2006 г.
- ^ «Страницы Макперла» . Prime Time Freeware. 1997. Архивировано из оригинала 18 января 2006 года . Получено 18 января 2006 года .
- ^ «Perl Ports (бинарные распределения)» . CPAN . Архивировано из оригинала 18 апреля 2006 года . Получено 27 января 2011 года .
- ^ «ActivePerl-это Perl для Windows, Mac, Linux, AIX, HP-UX & Solaris» . Программное обеспечение Activestate . Архивировано с оригинала 31 марта 2016 года . Получено 9 января 2011 года .
- ^ «Использование PPM» . Программное обеспечение Activestate . Архивировано из оригинала 27 августа 2010 года . Получено 9 января 2011 года .
- ^ Крейн, Дана (23 июля 2019 г.). «Прощай, ppm, Hello State Tool» . ActiveState.com . Архивировано из оригинала 28 июля 2020 года . Получено 16 апреля 2020 года .
- ^ readme.txt
- ^ «Алиот: Игра в области компьютерного языка: информация о проекте» . Алиот . Архивировано с оригинала 25 марта 2013 года . Получено 13 января 2011 года .
- ^ "Какие программы быстрее?" Полем Компьютерные тесты игры . Алиот . Архивировано из оригинала 17 мая 2013 года . Получено 13 января 2011 года .
- ^ Лерой, Жан-Луи (1 декабря 2005 г.). «Своевременное начало» . О'Рейли. Архивировано из оригинала 13 июня 2006 года . Получено 22 мая 2006 г.
- ^ Beattie, Malcolm & Enache Adrian (2003). «B :: Bytecode Perl Compiler Backend» . CPAN . Архивировано из оригинала 30 марта 2021 года . Получено 16 сентября 2013 года .
- ^ Шварц, Рэндал; Фой, Брайан; Феникс, Том (23 июня 2011 г.). Обучение Perl . "O'Reilly Media, Inc.". ISBN 978-1-4493-0358-7 .
- ^ Стейн, Линкольн; Maceachern, Doug (1999). Написание модулей Apache с Perl и C: API Apache и mod_perl . "O'Reilly Media, Inc.". ISBN 978-1-56592-567-0 .
- ^ Бекман, Стас; Cholet, Eric (2003). Практический mod_perl . "O'Reilly Media, Inc.". ISBN 978-0-596-00227-5 .
- ^ Ингсон, Брайан. "Inline - metacpan.org" . CPAN . Архивировано с оригинала 13 июня 2013 года . Получено 26 января 2011 года .
- ^ Гилмор, WJ (2010). Начало PHP и MySQL: от новичка до профессионального, четвертого издания . Апресс. п. 484 . ISBN 978-1-4302-3114-1 .
- ^ "IMDB Helpdesk: Какое программное/оборудование вы используете для запуска сайта?" Полем База данных интернет -фильмов . Архивировано с оригинала 9 марта 2017 года . Получено 12 февраля 2011 года .
- ^ DuckDuckgo обрабатывает большое количество поисковых запросов по 4,5 миллиона запросов в день. https://duckduckgo.com/traffic.html Архивировано 15 февраля 2012 года в Библиотеки Конгресса веб -архиве
- ^ DuckDuckgo использует Perl https://web.archive.org/web/20101231135106/http://www.gabrielweinberg.com/blog/2009/03/duck-go-architecture.html
- ^ "Perl FAQ" . Архивировано из оригинала 6 августа 2019 года . Получено 6 августа 2019 года .
Perl довольно широко используется в Debian. В Perl написаны не только некоторые основные функции, но и в нестабильных пакетах, которые имеют Perl на их имя (март 2004 г.).
- ^ «Книги Perl - Книга: Данные с перлом» . Perl.org . Архивировано из оригинала 7 сентября 2011 года . Получено 30 декабря 2010 года .
- ^ Декарт, аллигатор; Бунс, Тим (2000). Программирование Perl DBI: [Программирование базы данных с Perl] (1 изд.). Пекин [UA]: О'Рейли. ISBN 978-1-56592-699-8 .
- ^ «Программирование PERL - принципы языков программирования» . sites.google.com . Архивировано из оригинала 8 октября 2020 года . Получено 18 мая 2021 года .
- ^ Бунс, Тим; Декарт, аллигатор (4 февраля 2000 г.). Программирование Perl DBI: программирование базы данных с Perl . "O'Reilly Media, Inc.". ISBN 978-1-4493-1536-8 .
- ^ Бекман, Стас. «Эффективная работа с базами данных в рамках mod_perl» . Архивировано из оригинала 22 августа 2007 года . Получено 1 сентября 2007 года .
- ^ Пачев, Саша (10 апреля 2007 г.). Понимание внутренних групп MySQL: обнаружение и улучшение отличной базы данных . "O'Reilly Media, Inc.". ISBN 978-0-596-55280-0 .
- ^ "Class :: DBI - простой абстракция базы данных - metacpan.org" . Metacpan.org . Архивировано из оригинала 6 августа 2020 года . Получено 8 апреля 2020 года .
- ^ "Rose :: DB :: Object - расширяемая, высокопроизводительная объектно -релационная карта (ORM). - Metacpan.org" . Metacpan.org . Архивировано из оригинала 6 августа 2020 года . Получено 8 апреля 2020 года .
- ^ «T SQL Запрос ссылки на разработчика» . pdfpremiumfree.com . Получено 18 мая 2021 года .
- ^ Стена, Ларри (22 мая 2014 г.). «Культура Perl (он же первое состояние лука)» . Архивировано из оригинала 22 мая 2014 года . Получено 22 мая 2014 года .
- ^ Стена, Ларри . «2 -е состояние лука» . Архивировано из оригинала 17 июля 2012 года . Получено 12 октября 2012 года . (Поиск «церкви»)
- ^ Шварц, Рэндал Л. (2 мая 1999 г.). "Кто просто еще один хакер Perl?" Полем Группа новостей : comp.lang.perl.misc . USENET: [Электронная почта защищена] . Архивировано из оригинала 8 июля 2012 года . Получено 5 декабря 2014 года .
- ^ Шварц, Рэндал (31 марта 2005 г.). "Канонический JAPH" . Перлмоны . Архивировано из оригинала 22 июля 2011 года . Получено 16 мая 2011 года .
- ^ Бэкон, Грег (28 мая 1999 г.). «Re: увеличение значения в ломтике» . Группа новостей : comp.lang.perl.misc . USENET: [Электронная почта защищена] . Архивировано из оригинала 7 июля 2011 года . Получено 12 июля 2011 года .
- ^ Назад, Адам. «RSA в 5 строках Perl» . Архивировано из оригинала 19 января 2011 года . Получено 10 января 2011 года .
- ^ "Code Golf: Что такое Code Golf?" Полем 29 -дневные. 2007. Архивировано из оригинала 13 января 2012 года . Получено 26 ноября 2018 года .
- ^ Галло, Феликс (2003). «Соревнование по нулю с запутанным Perl» (PDF) . В Джоне Орвант (ред.). Игры, диверсии и культура Perl: лучший из журнала Perl . О'Рейли СМИ. Архивировано из оригинала (PDF) 22 ноября 2009 года . Получено 12 января 2011 года .
- ^ "Perl Poetry" . Перлмоны . Архивировано из оригинала 27 сентября 2007 года . Получено 27 января 2011 года .
Дальнейшее чтение
[ редактировать ]- Обучение Perl 6th Edition (2011), О'Рейли. Начало введение в Perl.
- Начало Perl 1 -е издание (2012), Wrox. Учебник для начинающих для тех, кто новичок в программировании или просто новичок в Perl.
- Modern Perl Archived 22 декабря 2011 года, в Machine Wayback 2nd Edition (2012), Onyx Neon. Описывает современные методы программирования PERL.
- Программирование Perl 4th Edition (2012), О'Рейли. Окончательная ссылка Perl.
- Эффективное программирование PERL 2-е издание (2010), Аддисон-Уэсли. Промежуточный и до продвинутого руководства по написанию идиоматического Perl.
- Поваренная книга Perl , ISBN 0-596-00313-7 . Практические примеры программирования PERL.
- Доминис, Марк Джейсон (2005). Более высокий порядок Perl . Морган Кауфманн. ISBN 978-1-55860-701-9 Полем Методы функционального программирования в Perl.
Внешние ссылки
[ редактировать ]- Перв
- Американские изобретения
- Языки программирования
- Семья C -программирования.
- Кроссплатформенное программное обеспечение
- Динамические языки программирования
- Динамически напечатанные языки программирования
- Бесплатные компиляторы и переводчики
- Бесплатное программное обеспечение, запрограммированное в C
- Языки программирования высокого уровня
- Мультипарадигмские языки программирования
- Объектно-ориентированные языки программирования
- Процедурные языки программирования
- Языки программирования, созданные в 1987 году
- Языки сценариев
- Программное обеспечение с использованием художественной лицензии
- Текстовые языки программирования
- Инструменты программирования UNIX