perle

Un article de Wikipédia, l'encyclopédie libre
Aller à la navigation Aller à la recherche

perle
Logo de langue Perl.svg
ParadigmeMulti-paradigme : fonctionnel , impératif , orienté objet ( basé sur les classes ), réflexif
Conçu parMur de Larry
DéveloppeurMur de Larry
Première apparition1er février 1988 ; il y a 34 ans [1] ( 1988-02-01 )
Version stable
  • 5.34.0 [2] / 20 mai 2021 ; il y a 9 mois ( 2021-05-20 )
  • 5.32.1 [3] / 23 janvier 2021 ; il y a 13 mois ( 2021-01-23 )
Version d'aperçu
5.35.9 [4] / 20 février 2022 ; il y a 5 jours ( 2022-02-20 )
Discipline de frappeDynamique
Langage d'implémentationC
SEMultiplateforme
LicenceLicence Artistique 1.0 [5] [6] ou Licence Publique Générale GNU [7]
Extensions de nom de fichier.plx, .pl, .pm, .xs, .t, .pod, .cgi
Site Internetwww .perl .org
Influencé par
AWK , BASIC , C , C++ , Lisp , sed , shell Unix [8]
Influencé
CoffeeScript , [ citation nécessaire ] Groovy , [ citation nécessaire ] JavaScript , Julia , LPC , PHP , Python , Raku , Ruby , PowerShell

Perl est une famille de deux langages de programmation dynamiques , interprétés et de haut niveau . "Perl" fait référence à Perl 5, mais de 2000 à 2019, il faisait également référence à son "langage sœur" repensé, Perl 6, avant que le nom de ce dernier ne soit officiellement changé en Raku en octobre 2019. [9] [10]

Bien que Perl ne soit pas officiellement un acronyme, [11] il existe divers backronymes utilisés, y compris "Practical Extraction and Reporting Language". [12] Perl a été développé par Larry Wall en 1987 en tant que langage de script Unix à usage général pour faciliter le traitement des rapports. [13] Depuis lors, il a subi de nombreux changements et révisions. Raku, qui a commencé comme une refonte de Perl 5 en 2000, a finalement évolué vers un langage distinct. Les deux langages continuent d'être développés indépendamment par différentes équipes de développement et empruntent généreusement des idées l'un à l'autre.

Les langages Perl empruntent des fonctionnalités à d'autres langages de programmation, notamment C , sh , AWK et sed ; [14] Ils fournissent des installations de traitement de texte sans les limites arbitraires de longueur de données de nombreux outils de ligne de commande Unix contemporains . [15] Perl 5 a gagné en popularité à la fin des années 1990 en tant que langage de script CGI , en partie grâce à ses puissantes capacités d'expression régulière et d' analyse de chaînes . [16] [17] [18] [19]

En plus de CGI, Perl 5 est utilisé pour l' administration système , la programmation réseau , la finance, la bioinformatique et d'autres applications, telles que les interfaces graphiques . Il a été surnommé "la tronçonneuse de l'armée suisse des langages de script" en raison de sa flexibilité et de sa puissance [20] , mais aussi de sa laideur. [21] En 1998, on l'appelait aussi le « ruban adhésif qui maintient Internet ensemble », en référence à la fois à son utilisation omniprésente comme langage de colle et à son inélégance perçue. [22]

Perl est un langage de programmation très expressif : le code source d'un algorithme donné peut être court et hautement compressible. [23] [24]

Nom

Perl s'appelait à l'origine "Pearl". Wall voulait donner à la langue un nom court avec des connotations positives. Wall a découvert le langage de programmation PEARL existant avant la sortie officielle de Perl et a changé l'orthographe du nom. [25]

En référence au langage, le nom est en majuscule : Perl . Lorsque vous faites référence au programme lui-même, le nom n'est pas en majuscule ( perl ) car la plupart des systèmes de fichiers de type Unix sont sensibles à la casse. Avant la sortie de la première édition de Programming Perl , il était courant de se référer au langage en tant que perl . Randal L. Schwartz , cependant, a mis en majuscule le nom de la langue dans le livre pour qu'il ressorte mieux lors de la composition. Cette distinction de cas a ensuite été documentée comme canonique. [26]

Le nom est occasionnellement développé en backronym : Practical Extraction and Report Language [27] et le propre Pathologically Eclectic Rubbish Lister de Wall qui se trouve dans la page de manuel de perl. [28]

Historique

Premières versions

Larry Wall a commencé à travailler sur Perl en 1987, alors qu'il travaillait comme programmeur chez Unisys , [15] et la version 1.0 a été publiée sur le groupe de discussion comp.sources.unix le 1er février 1988. [1] Le langage s'est développé rapidement au cours des prochaines années . années.

Perl 2, sorti en 1988, comportait un meilleur moteur d'expressions régulières. Perl 3, sorti en 1989, a ajouté la prise en charge des flux de données binaires . [ citation nécessaire ]

À l'origine, la seule documentation pour Perl était une seule longue page de manuel . En 1991, Programming Perl , connu par de nombreux programmeurs Perl sous le nom de "Camel Book" en raison de sa couverture, a été publié et est devenu la référence de facto pour le langage. Dans le même temps, le numéro de version de Perl est passé à 4, non pour marquer un changement majeur dans le langage mais pour identifier la version bien documentée par le livre. [ citation nécessaire ]

Début Perl 5

Perl 4 est passé par une série de versions de maintenance , aboutissant à Perl 4.036 en 1993, après quoi Wall a abandonné Perl 4 pour commencer à travailler sur Perl 5. La conception initiale de Perl 5 s'est poursuivie en 1994. La liste de diffusion perl5-porters a été créée en mai 1994 pour coordonner le travail de portage de Perl 5 sur différentes plates-formes. Il reste le forum principal pour le développement, la maintenance et le portage de Perl 5. [29]

Perl 5.000 est sorti le 17 octobre 1994. [30] Il s'agissait d'une réécriture presque complète de l' interpréteur et il a ajouté de nombreuses nouvelles fonctionnalités au langage, notamment des objets , des références , des variables lexicales (my) et des modules . Il est important de noter que les modules fournissaient un mécanisme pour étendre le langage sans modifier l'interpréteur. Cela a permis à l'interpréteur de base de se stabiliser, tout en permettant aux programmeurs Perl ordinaires d'ajouter de nouvelles fonctionnalités de langage. Perl 5 est en développement actif depuis lors. [ citation nécessaire ]

Perl 5.001 est sorti le 13 mars 1995. Perl 5.002 est sorti le 29 février 1996 avec la nouvelle fonctionnalité de prototypes. Cela permettait aux auteurs de modules de créer des sous- programmes qui se comportaient comme des commandes internes Perl . Perl 5.003 est sorti le 25 juin 1996 en tant que version de sécurité. [ citation nécessaire ]

L'un des événements les plus importants de l'histoire de Perl 5 a eu lieu en dehors du langage proprement dit et a été une conséquence de son support de module. Le 26 octobre 1995, le Comprehensive Perl Archive Network (CPAN) a été créé en tant que référentiel pour le langage Perl et les modules Perl ; en mai 2017, il contenait plus de 185 178 modules dans 35 190 distributions, écrits par plus de 13 071 auteurs, et se reflétait dans le monde entier dans plus de 245 emplacements. [31]

Perl 5.004 est sorti le 15 mai 1997 et comprenait, entre autres, le package UNIVERSAL, donnant à Perl un objet de base à partir duquel toutes les classes étaient automatiquement dérivées et la possibilité d'exiger des versions de modules. Un autre développement significatif a été l'inclusion du module CGI.pm , [32] qui a contribué à la popularité de Perl en tant que langage de script CGI . [33]

Perl 5.004 a ajouté la prise en charge de Microsoft Windows , Plan 9 , QNX et AmigaOS . [32]

Perl 5.005 est sorti le 22 juillet 1998. Cette version comprenait plusieurs améliorations du moteur regex , de nouveaux crochets dans le backend via les B::*modules, l' qr//opérateur de citation regex, une large sélection d'autres nouveaux modules de base et une prise en charge supplémentaire de plusieurs autres modules d'exploitation. systèmes, y compris BeOS . [34]

2000–2020

Version majeure [35] Dernière mise à jour [36]
Ancienne version, plus maintenue :5.4 1999-04-29
Ancienne version, plus maintenue :5.5 1999-03-29
Ancienne version, plus maintenue :5.6 2003-11-15
Ancienne version, plus maintenue :5.8 2008-12-14
Ancienne version, plus maintenue :5.10 2009-08-23
Ancienne version, plus maintenue :5.12 2012-11-10
Ancienne version, plus maintenue :5.14 2013-03-10
Ancienne version, plus maintenue :5.16 2013-03-11
Ancienne version, plus maintenue :5.18 2014-10-02
Ancienne version, plus maintenue :5.20 2015-09-12
Ancienne version, plus maintenue :5.22 2017-07-15
Ancienne version, plus maintenue :5.24 2018-04-14
Ancienne version, plus maintenue :5.26 2018-11-29
Ancienne version, plus maintenue :5.28 2020-06-01
Ancienne version, plus maintenue :17h30 2020-06-01
Ancienne version, mais toujours maintenue :5.32 2021-01-23
Version stable actuelle : 5.34 2021-05-20
Dernière version d'aperçu d'une future version :5.35 2021-05-21
Version future :5.36 2022-05-20
Version future :7.0 2022 ?
Légende:
Ancienne version
Ancienne version, toujours maintenue
Version stable actuelle
Dernière version d'aperçu Version
future

Perl 5.6 est sorti le 22 mars 2000. Les principaux changements comprenaient la prise en charge 64 bits , la représentation de chaîne Unicode , la prise en charge des fichiers de plus de 2 Gio et le mot-clé "our". [37] [38] Lors du développement de Perl 5.6, la décision a été prise de changer le schéma de version pour un autre plus similaire aux autres projets open source; après 5.005_63, la version suivante est devenue 5.5.640, avec des plans pour que les versions de développement aient des nombres impairs et que les versions stables aient des nombres pairs. [ citation nécessaire ]

En 2000, Wall a lancé un appel à suggestions pour une nouvelle version de Perl auprès de la communauté. Le processus a abouti à 361 documents RFC (demande de commentaires) qui devaient être utilisés pour guider le développement de Perl 6. En 2001, [39] les travaux ont commencé sur les "Apocalypses" pour Perl 6, une série de documents destinés à résumer le changement demandes et présenter la conception de la prochaine génération de Perl. Ils ont été présentés comme un résumé des RFC plutôt que comme un document officiel. À ce stade, Perl 6 n'existait que comme description d'un langage. [ citation nécessaire ]

Perl 5.8 a été publié pour la première fois le 18 juillet 2002 et a depuis fait l'objet de mises à jour presque annuelles. Perl 5.8 a amélioré la prise en charge d'Unicode, ajouté une nouvelle implémentation d'E/S, ajouté une nouvelle implémentation de thread, amélioré la précision numérique et ajouté plusieurs nouveaux modules. [40] Depuis 2013, cette version reste la version la plus populaire de Perl et est utilisée par Red Hat 5, Suse 10, Solaris 10, HP-UX 11.31 et AIX 5. [ citation nécessaire ]

En 2004, le travail a commencé sur les " Synopsis " - des documents qui résumaient à l'origine les Apocalypses, mais qui sont devenus la spécification du langage Perl 6. En février 2005, Audrey Tang a commencé à travailler sur Pugs , un interpréteur Perl 6 écrit en Haskell . [41] C'était le premier effort concerté pour faire de Perl 6 une réalité. Cet effort a stagné en 2006. [42]

PONIE est l'acronyme de Perl On New Internal Engine. Le projet PONIE a existé de 2003 à 2006 et devait être un pont entre Perl 5 et Perl 6. Il s'agissait d'un effort pour réécrire l'interpréteur Perl 5 pour qu'il fonctionne sur Parrot , la machine virtuelle Perl 6. L'objectif était d'assurer l'avenir des millions de lignes de code Perl 5 dans des milliers d'entreprises à travers le monde. [43] Le projet PONIE a pris fin en 2006 et n'est plus activement développé. Certaines des améliorations apportées à l'interpréteur Perl 5 dans le cadre de PONIE ont été intégrées à ce projet. [44]

Le 18 décembre 2007, jour du 20e anniversaire de Perl 1.0, Perl 5.10.0 est sorti. Perl 5.10.0 incluait de nouvelles fonctionnalités notables, qui le rapprochaient de Perl 6. Celles-ci comprenaient une instruction switch (appelée "given"/"when"), des mises à jour d'expressions régulières et l' opérateur de correspondance intelligente (~~). [45] [46] À peu près à la même époque, le développement a commencé sérieusement sur une autre implémentation de Perl 6 connue sous le nom de Rakudo Perl , développée en tandem avec la machine virtuelle Parrot . Depuis novembre 2009, Rakudo Perl a eu des versions mensuelles régulières et est maintenant l'implémentation la plus complète de Perl 6.

Un changement majeur dans le processus de développement de Perl 5 s'est produit avec Perl 5.11 ; la communauté de développement est passée à un cycle de publication mensuel des versions de développement, avec un calendrier annuel des versions stables. Selon ce plan, les versions ponctuelles de correction de bogues suivront les versions stables tous les trois mois. [ citation nécessaire ]

Le 12 avril 2010, Perl 5.12.0 est sorti. Les principales améliorations notables incluent une nouvelle package NAME VERSIONsyntaxe, l'opérateur Yada Yada (destiné à marquer le code d'espace réservé qui n'est pas encore implémenté), des restrictions implicites, une conformité Y2038 complète , une surcharge de conversion regex, la prise en charge de DTrace et Unicode 5.2. [47] Le 21 janvier 2011, Perl 5.12.3 est sorti ; il contient des modules mis à jour et quelques modifications de la documentation. [48] ​​La version 5.12.4 a été publiée le 20 juin 2011. La dernière version de cette branche, 5.12.5, a été publiée le 10 novembre 2012. [ citation nécessaire ]

Le 14 mai 2011, Perl 5.14 est sorti avec le support JSON intégré. [49]

Le 20 mai 2012, Perl 5.16 est sorti. Les nouvelles fonctionnalités notables incluent la possibilité de spécifier une version donnée de Perl que l'on souhaite émuler, permettant aux utilisateurs de mettre à niveau leur version de Perl, mais d'exécuter toujours d'anciens scripts qui seraient normalement incompatibles. [50] Perl 5.16 met également à jour le noyau pour prendre en charge Unicode 6.1. [50]

Le 18 mai 2013, Perl 5.18 est sorti. Les nouvelles fonctionnalités notables incluent les nouveaux crochets dtrace, les sous-titres lexicaux, plus de CORE :: sous-marins, la refonte du hachage pour des raisons de sécurité, la prise en charge d'Unicode 6.2. [51]

Le 27 mai 2014, Perl 5.20 est sorti. Les nouvelles fonctionnalités notables incluent les signatures de sous-programmes, les tranches de hachage/nouvelle syntaxe de tranche, le déréférencement postfixé (expérimental), Unicode 6.3, rand() utilisant un générateur de nombres aléatoires cohérent. [52]

Certains observateurs attribuent à la sortie de Perl 5.10 le début du mouvement Perl moderne. [53] En particulier, cette phrase décrit un style de développement qui englobe l'utilisation du CPAN, tire parti des développements récents du langage et est rigoureux dans la création de code de haute qualité. [54] Alors que le livre "Modern Perl" [55] est peut-être le porte-drapeau le plus visible de cette idée, d'autres groupes tels que l'Enlightened Perl Organization [56] ont repris la cause.

Fin 2012 et 2013, plusieurs projets d'implémentations alternatives pour Perl 5 ont démarré : Perl5 dans Perl6 par l'équipe Rakudo Perl, [57] moe par Stevan Little et ses amis, [58] p2 [59] par l'équipe Perl11 sous Reini Urban, gperl par goccy, [60] et rperl, un projet Kickstarter dirigé par Will Braswell et affilié au projet Perll11. [61]

À partir de 2020

En juin 2020, Perl 7 a été annoncé comme le successeur de Perl 5. [62] Perl 7 devait initialement être basé sur Perl 5.32 avec une sortie prévue au premier semestre 2021, et des versions candidates plus tôt. [63] Ce plan a été révisé en mai 2021, sans aucun calendrier de publication ni version de Perl 5 à utiliser comme référence spécifiée. [64] Lorsque Perl 7 sera publié, Perl 5 entrera en maintenance à long terme. Les versions de Perl 5 prises en charge continueront cependant à bénéficier d'importants correctifs de sécurité et de bogues. [65]

Symboles

Chameau

Le symbole Camel utilisé par O'Reilly Media

Programming Perl , publié par O'Reilly Media , présente une image d'un dromadaire sur la couverture et est communément appelé le "Camel Book". [66] Cette image est devenue un symbole non officiel de Perl ainsi qu'un emblème général de hacker , apparaissant sur des T-shirts et d'autres vêtements. [ citation nécessaire ]

O'Reilly possède l'image en tant que marque mais l'octroie une licence pour un usage non commercial , ne nécessitant qu'un accusé de réception et un lien vers www.perl.com. L'octroi de licences à des fins commerciales est décidé au cas par cas. [67] O'Reilly fournit également les logos "Programming Republic of Perl" pour les sites non commerciaux et les boutons "Powered by Perl" pour tout site qui utilise Perl. [67]

Oignon

Le logo de l'oignon utilisé par la Fondation Perl

La Fondation Perl possède un symbole alternatif, un oignon, qu'elle concède sous licence à ses filiales, Perl Mongers , PerlMonks , Perl.org et d'autres. [68] Le symbole est un calembour visuel sur l'oignon perlé . [69]

Rapace

Logo Perl 5 alternatif

Sebastian Riedel, le créateur de Mojolicious , a créé un logo représentant un dinosaure raptor , disponible sous licence CC-SA, version 4.0. [70] L'analogue du rapace provient d'une série de conférences données par Matt S Trout à partir de 2010. [71]

Vue d'ensemble

Selon Wall, Perl a deux slogans. La première est " Il y a plus d'une façon de le faire ", communément appelée TMTOWTDI. Le deuxième slogan est "Les choses faciles devraient être faciles et les choses difficiles devraient être possibles". [15]

Fonctionnalités

La structure globale de Perl dérive largement de C. Perl est de nature procédurale , avec des variables , des expressions , des instructions d'affectation , des blocs délimités par des accolades , des structures de contrôle et des sous- programmes . [72]

Perl reprend également des fonctionnalités de la programmation shell. Toutes les variables sont marquées par des sigils de tête , ce qui permet aux variables d' être interpolées directement dans des chaînes . Cependant, contrairement au shell, Perl utilise des sigils sur tous les accès aux variables, et contrairement à la plupart des autres langages de programmation qui utilisent des sigils, le sigil n'indique pas le type de la variable mais le type de l'expression. Ainsi, par exemple, alors qu'un tableau est désigné par le sigil "@" (par exemple @arrayname), un membre individuel du tableau est désigné par le sigil scalaire "$" (par exemple $arrayname[3]). Perl a également de nombreuses fonctions intégrées qui fournissent des outils souvent utilisés dans la programmation shell (bien que beaucoup de ces outils soient implémentés par des programmes externes au shell) tels que le tri, et appeler les fonctions du système d'exploitation . [ citation nécessaire ]

Perl prend des hachages ("tableaux associatifs") de AWK et des expressions régulières de sed . Ceux-ci simplifient de nombreuses tâches d'analyse, de traitement de texte et de gestion de données. Partagé avec Lisp est le retour implicite de la dernière valeur d'un bloc, et toutes les instructions sont également des expressions qui peuvent être utilisées dans des expressions plus grandes elles-mêmes. [ citation nécessaire ]

Perl 5 a ajouté des fonctionnalités qui prennent en charge des structures de données complexes , des fonctions de première classe (c'est-à-dire des fermetures en tant que valeurs) et un modèle de programmation orienté objet. Il s'agit notamment des références , des packages , de la répartition des méthodes basées sur les classes et des variables à portée lexicale , ainsi que des directives du compilateur (par exemple, le strict pragma ). Une fonctionnalité supplémentaire majeure introduite avec Perl 5 était la possibilité de conditionner le code sous forme de modules réutilisables. Wall a déclaré plus tard que "l'intention du système de modules de Perl 5 était d'encourager la croissance de la culture Perl plutôt que du noyau Perl." [73]

Toutes les versions de Perl effectuent le typage automatique des données et la gestion automatique de la mémoire . L'interpréteur connaît le type et les exigences de stockage de chaque objet de données dans le programme ; il alloue et libère de l'espace pour eux si nécessaire en utilisant le comptage de références (il ne peut donc pas désallouer des structures de données circulaires sans intervention manuelle). Les conversions de type légal — par exemple, les conversions de nombre en chaîne — sont effectuées automatiquement au moment de l'exécution ; les conversions de type illégales sont des erreurs fatales. [ citation nécessaire ]

Conception

La conception de Perl peut être comprise comme une réponse à trois grandes tendances de l'industrie informatique : la baisse des coûts du matériel, l'augmentation des coûts de main-d'œuvre et les améliorations de la technologie des compilateurs . De nombreux langages informatiques antérieurs, tels que Fortran et C, visaient à utiliser efficacement du matériel informatique coûteux. En revanche, Perl a été conçu pour que les programmeurs informatiques puissent écrire des programmes plus rapidement et plus facilement. [ citation nécessaire ]

Perl a de nombreuses fonctionnalités qui facilitent la tâche du programmeur au détriment de besoins plus importants en termes de CPU et de mémoire. Ceux-ci incluent la gestion automatique de la mémoire ; typage dynamique ; chaînes, listes et hachages ; expressions régulières; introspection ; et une eval()fonction. Perl suit la théorie de "l'absence de limites intégrées", [66] une idée similaire à la règle Zero One Infinity . [ citation nécessaire ]

Wall a reçu une formation de linguiste et la conception de Perl est très influencée par les principes linguistiques . Les exemples incluent le codage de Huffman (les constructions courantes doivent être courtes), une bonne pondération finale (les informations importantes doivent venir en premier) et une grande collection de primitives de langage . Perl favorise les constructions de langage qui sont concises et naturelles à écrire pour les humains, même lorsqu'elles compliquent l'interpréteur Perl. [74]

La syntaxe de Perl reflète l'idée que "les choses qui sont différentes devraient avoir une apparence différente". [75] Par exemple, les scalaires, les tableaux et les hachages ont des sigils principaux différents. Les indices de tableau et les clés de hachage utilisent différents types d'accolades. Les chaînes et les expressions régulières ont des délimiteurs standard différents. Cette approche peut être mise en contraste avec un langage tel que Lisp , où la même syntaxe de base, composée d' expressions symboliques simples et universelles , est utilisée à toutes fins utiles. [ citation nécessaire ]

Perl n'applique aucun paradigme de programmation particulier ( procédural , orienté objet , fonctionnel ou autres) ni même oblige le programmeur à choisir parmi eux. [ citation nécessaire ]

Il y a un large penchant pratique à la fois pour le langage Perl et pour la communauté et la culture qui l'entourent. La préface de Programming Perl commence ainsi : « Perl est un langage pour faire votre travail. [15] Une conséquence de ceci est que Perl n'est pas un langage ordonné. Il comprend de nombreuses fonctionnalités, tolère des exceptions à ses règles et utilise des heuristiques pour résoudre les ambiguïtés syntaxiques. En raison de la nature indulgente du compilateur, les bogues peuvent parfois être difficiles à trouver. La documentation des fonctions de Perl fait des remarques sur le comportement variable des fonctions intégrées dans les contextes de liste et scalaires en disant : « En général, elles font ce que vous voulez, sauf si vous voulez de la cohérence. [76]

Aucune spécification ou norme écrite pour le langage Perl n'existe pour les versions de Perl jusqu'à Perl 5, et il n'est pas prévu d'en créer une pour la version actuelle de Perl. Il n'y a eu qu'une seule implémentation de l'interpréteur, et le langage a évolué avec elle. Cet interpréteur, avec ses tests fonctionnels, constitue une spécification de facto du langage. Perl 6, cependant, a commencé avec une spécification, [77] et plusieurs projets [78] visent à implémenter tout ou partie de la spécification. [ citation nécessaire ]

Candidatures

Perl a des applications nombreuses et variées, aggravées par la disponibilité de nombreux modules standard et tiers.

Perl a été principalement utilisé pour écrire des scripts CGI : les grands projets écrits en Perl incluent cPanel , Slash , Bugzilla , RT , TWiki et Movable Type ; Les sites Web à fort trafic qui utilisent beaucoup Perl incluent Priceline.com , Craigslist , [79] IMDb , [80] LiveJournal , DuckDuckGo , [81] [82] Slashdot et Ticketmaster . Il s'agit également d'un composant facultatif de la célèbre pile technologique LAMP pour le développement Web., au lieu de PHP ou Python . Perl est largement utilisé comme langage de programmation système dans la distribution Debian Linux . [83]

Perl est souvent utilisé comme langage de liaison, liant ensemble des systèmes et des interfaces qui n'ont pas été spécifiquement conçus pour interagir, et pour le « data munging », [84] c'est-à-dire la conversion ou le traitement de grandes quantités de données pour des tâches telles que la création de rapports. En fait, ces atouts sont intimement liés. Cette combinaison fait de Perl un langage polyvalent populaire pour les administrateurs système , en particulier parce que des programmes courts, souvent appelés « programmes à une ligne », peuvent être entrés et exécutés sur une seule ligne de commande . [ citation nécessaire ]

Le code Perl peut être rendu portable sous Windows et Unix ; un tel code est souvent utilisé par les fournisseurs de logiciels (à la fois COTS et sur mesure) pour simplifier le conditionnement et la maintenance des scripts de construction et de déploiement de logiciels. [ citation nécessaire ]

Perl/Tk et wxPerl sont couramment utilisés pour ajouter des interfaces utilisateur graphiques aux scripts Perl.

Mise en œuvre

Perl est implémenté en tant qu'interpréteur de base, écrit en C, avec une grande collection de modules, écrits en Perl et C. Depuis 2010 , l'interpréteur est composé de 150 000 lignes de code C et se compile en un exécutable de 1 Mo sur des architectures de machine typiques. Alternativement, l'interpréteur peut être compilé dans une bibliothèque de liens et intégré dans d'autres programmes. Il y a près de 500 modules dans la distribution, comprenant 200 000 lignes de Perl et 350 000 lignes supplémentaires de code C (une grande partie du code C dans les modules consiste en des tables de codage de caractères ). [ citation nécessaire ]

L'interpréteur a une architecture orientée objet. Tous les éléments du langage Perl - scalaires, tableaux, hachages, coderefs, descripteurs de fichiers - sont représentés dans l'interpréteur par des structures C . Les opérations sur ces structures sont définies par une grande collection de macros , typedefs et fonctions ; ceux-ci constituent l' API Perl C. L'API Perl peut être déconcertante pour les non-initiés, mais ses points d'entrée suivent un schéma de nommage cohérent , qui fournit des conseils à ceux qui l'utilisent. [ citation nécessaire ]

La vie d'un interpréteur Perl se divise globalement en une phase de compilation et une phase d'exécution. [85] En Perl, les phases sont les principales étapes du cycle de vie de l'interpréteur. Chaque interprète ne passe par chaque phase qu'une seule fois, et les phases suivent dans un ordre fixe. [ citation nécessaire ]

La plupart de ce qui se passe dans la phase de compilation de Perl est de la compilation, et la plupart de ce qui se passe dans la phase d'exécution de Perl est de l'exécution, mais il y a des exceptions significatives. Perl fait un usage important de sa capacité à exécuter du code Perl pendant la phase de compilation. Perl retardera également la compilation dans la phase d'exécution. Les termes qui indiquent le type de traitement qui se produit réellement à tout moment sont le temps de compilation et le temps d'exécution . Perl est en temps de compilation à la plupart des moments de la phase de compilation, mais le temps de compilation peut également être entré pendant la phase d'exécution. Le temps de compilation du code dans un argument de chaîne passé à la evalfonction intégrée se produit pendant la phase d'exécution. Perl est souvent en phase d'exécution pendant la phase de compilation et passe la majeure partie de la phase d'exécution en temps d'exécution. Coder dansBEGINblocks s'exécute au moment de l'exécution mais dans la phase de compilation.

Au moment de la compilation, l'interpréteur analyse le code Perl dans un arbre de syntaxe . A l'exécution, il exécute le programme en parcourant l'arborescence . Le texte n'est analysé qu'une seule fois et l'arbre de syntaxe est soumis à une optimisation avant son exécution, de sorte que l'exécution est relativement efficace. Les optimisations au moment de la compilation sur l'arbre de syntaxe incluent le pliage constant et la propagation du contexte, mais l' optimisation du judas est également effectuée. [86]

Perl a une grammaire Turing-complète car l'analyse peut être affectée par le code d'exécution exécuté pendant la phase de compilation. [87] Par conséquent, Perl ne peut pas être analysé par une combinaison droite Lex / Yacc lexer / analyseur . Au lieu de cela, l'interpréteur implémente son propre lexer, qui se coordonne avec un analyseur de bison GNU modifié pour résoudre les ambiguïtés dans le langage. [ citation nécessaire ]

On dit souvent que "Seul perl peut analyser Perl" [88] , ce qui signifie que seul l'interpréteur Perl ( perl) peut analyser le langage Perl ( Perl ), mais même cela n'est généralement pas vrai. Étant donné que l'interpréteur Perl peut simuler une machine de Turing pendant sa phase de compilation, il devrait décider du problème d'arrêt afin de terminer l'analyse dans tous les cas. C'est un résultat de longue date que le problème d'arrêt est indécidable, et donc même perl ne peut pas toujours analyser Perl. Perl fait le choix inhabituel de donner à l'utilisateur accès à toute sa puissance de programmation dans sa propre phase de compilation. Le coût en termes de pureté théorique est élevé, mais les inconvénients pratiques semblent rares. [ citation nécessaire ]

D'autres programmes qui entreprennent d'analyser Perl, tels que les analyseurs de code source et les auto-indenteurs , doivent faire face non seulement à des constructions syntaxiques ambiguës , mais aussi à l' indécidabilité de l'analyse Perl dans le cas général. Le projet PPI d' Adam Kennedy s'est concentré sur l'analyse du code Perl en tant que document (en conservant son intégrité en tant que document), au lieu d'analyser Perl en tant que code exécutable (ce que même Perl lui-même ne peut pas toujours faire). C'est Kennedy qui a d'abord conjecturé que "l'analyse de Perl souffre du 'problème d'arrêt'" [89] , ce qui a été prouvé plus tard. [90]

Perl est distribué avec plus de 250 000 tests fonctionnels pour le langage Perl de base et plus de 250 000 tests fonctionnels pour les modules de base. Ceux-ci s'exécutent dans le cadre du processus de construction normal et exercent intensivement l'interpréteur et ses modules de base. Les développeurs Perl s'appuient sur les tests fonctionnels pour s'assurer que les modifications apportées à l'interpréteur n'introduisent pas de bogues logiciels ; de plus, les utilisateurs de Perl qui voient que l'interpréteur réussit ses tests fonctionnels sur leur système peuvent avoir un degré élevé de confiance dans son bon fonctionnement. [ citation nécessaire ]

Disponibilité

Perl est sous double licence sous la licence artistique 1.0 [5] [6] et la licence publique générale GNU . [7] Des distributions sont disponibles pour la plupart des systèmes d'exploitation . Il est particulièrement répandu sur les systèmes Unix et de type Unix , mais il a été porté sur la plupart des plates-formes modernes (et de nombreuses obsolètes). Avec seulement six [ citation nécessaire ] exceptions signalées, Perl peut être compilé à partir du code source sur toutes les plates-formes compatibles POSIX ou compatibles Unix. [91]

En raison de modifications inhabituelles requises pour l' environnement Mac OS classique , un port spécial appelé MacPerl a été livré indépendamment. [92]

Le Comprehensive Perl Archive Network contient une liste complète des plates-formes prises en charge avec des liens vers les distributions disponibles sur chacune. [93] CPAN est également la source des modules Perl accessibles au public qui ne font pas partie de la distribution principale de Perl. [ citation nécessaire ]

Windows

Les utilisateurs de Microsoft Windows installent généralement l'une des distributions binaires natives de Perl pour Win32, le plus souvent Strawberry Perl ou ActivePerl . Compiler Perl à partir du code source sous Windows est possible, mais la plupart des installations manquent du compilateur C et des outils de construction requis. Cela rend également difficile l'installation de modules à partir du CPAN, en particulier ceux qui sont partiellement écrits en C. [ citation nécessaire ]

ActivePerl est une distribution à source fermée d' ActiveState qui a des versions régulières qui suivent les versions principales de Perl. [94] La distribution comprenait auparavant le gestionnaire de paquets Perl (PPM), [95] un outil populaire pour l'installation, la suppression, la mise à niveau et la gestion de l'utilisation des modules Perl courants ; cependant, cet outil a été abandonné à partir d'ActivePerl 5.28. [96] PerlScript est également inclus , un moteur Windows Script Host (WSH) implémentant le langage Perl. Visual Perl est un outil ActiveState qui ajoute Perl à la suite de développement Visual Studio .NET. Un VBScript-vers-Perl, ainsi qu'un compilateur Perl pour Windows, et des convertisseurs de awk et sed vers Perl ont également été produits par cette société et inclus sur le CD ActiveState pour Windows , qui comprend toutes leurs distributions plus l' IDE Komodo et tous sauf le premier sur la variante Unix/Linux/Posix de celui-ci en 2002 et par la suite. [97]

Strawberry Perl est une distribution open source pour Windows. Il a eu des versions trimestrielles régulières depuis janvier 2008, y compris de nouveaux modules au fur et à mesure que les commentaires et les demandes arrivent. Strawberry Perl vise à pouvoir installer des modules comme les distributions Perl standard sur d'autres plates-formes, y compris la compilation de modules XS. [ citation nécessaire ]

La couche d'émulation Cygwin est une autre façon d'exécuter Perl sous Windows. Cygwin fournit un environnement de type Unix sous Windows, et Perl et CPAN sont disponibles en tant que packages pré-compilés standard dans le programme d'installation de Cygwin. Étant donné que Cygwin inclut également gcc , il est également possible de compiler Perl à partir des sources. [ citation nécessaire ]

Un exécutable perl est inclus dans plusieurs kits de ressources Windows dans le répertoire avec d'autres outils de script. [ citation nécessaire ]

Les implémentations de Perl sont fournies avec le MKS Toolkit , Interix (la base des implémentations antérieures des services Windows pour Unix ) et UWIN . [ citation nécessaire ]

Interfaces de base de données

Les capacités de traitement de texte de Perl peuvent être utilisées pour générer des requêtes SQL ; les tableaux, les hachages et la gestion automatique de la mémoire facilitent la collecte et le traitement des données renvoyées. Par exemple, dans l' interface de programmation d'application (API) Perl DBI de Tim Bunce , les arguments de l'API peuvent être le texte de requêtes SQL ; il est donc possible de programmer dans plusieurs langages en même temps (par exemple, pour générer une page Web en utilisant HTML , JavaScript et SQL dans un document here ). L'utilisation de l' interpolation de variables Perlpour personnaliser par programme chacune des requêtes SQL, et la spécification de tableaux ou de hachages Perl comme structures pour contenir par programme les ensembles de données résultant de chaque requête SQL, permet un mécanisme de haut niveau pour gérer de grandes quantités de données pour le post-traitement par un Sous-programme Perl. [98] Dans les premières versions de Perl, les interfaces de base de données ont été créées en reconnectant l'interpréteur avec une bibliothèque de base de données côté client . C'était suffisamment difficile pour que cela ne soit fait que pour quelques-unes des bases de données les plus importantes et les plus largement utilisées, et cela limitait l' perlexécutable résultant à l'utilisation d'une seule interface de base de données à la fois. [99]

En Perl 5, les interfaces de base de données sont implémentées par les modules Perl DBI. Le module DBI (Database Interface) présente une interface unique indépendante de la base de données pour les applications Perl, tandis que les modules DBD (Database Driver) gèrent les détails d'accès à quelque 50 bases de données différentes. il existe des pilotes DBD pour la plupart des bases de données ANSI SQL . [100]

DBI fournit une mise en cache pour les descripteurs de base de données et les requêtes, ce qui peut grandement améliorer les performances dans les environnements d'exécution de longue durée tels que mod perl , [101] aidant les systèmes à volume élevé à éviter les pics de charge comme dans l' effet Slashdot . [102]

Dans les applications Perl modernes, en particulier celles écrites à l'aide de frameworks Web tels que Catalyst , le module DBI est souvent utilisé indirectement via des mappeurs relationnels objet tels que DBIx::Class , Class::DBI [103] ou Rose::DB::Object [ 104] qui génèrent des requêtes SQL et gèrent les données de manière transparente pour l'auteur de l'application. [105]

Performances comparatives

Le jeu Computer Language Benchmarks compare les performances des implémentations de problèmes de programmation typiques dans plusieurs langages de programmation. [106] Les implémentations Perl présentées fonctionnent généralement vers le haut du spectre d'utilisation de la mémoire et donnent des résultats de vitesse variés. Les performances de Perl dans le jeu des benchmarks sont typiques des langages interprétés. [107]

Les grands programmes Perl démarrent plus lentement que les programmes similaires dans les langages compilés parce que perl doit compiler la source à chaque fois qu'il s'exécute. Dans un exposé à la conférence YAPC::Europe 2005 et dans l'article suivant "A Timely Start", Jean-Louis Leroy a constaté que ses programmes Perl prenaient beaucoup plus de temps que prévu car l'interpréteur perl passait beaucoup de temps à trouver des modules dans son trop grand nombre de modules. inclure le chemin. [108] Contrairement à Java, Python et Ruby, Perl n'a qu'un support expérimental pour la pré-compilation. [109] Par conséquent, les programmes Perl paient cette pénalité supplémentaire à chaque exécution. La phase d'exécution des programmes typiques est suffisamment longue pour quele temps de démarrage n'est pas important, mais les benchmarks qui mesurent des temps d'exécution très courts sont susceptibles d'être biaisés en raison de cette surcharge. [110]

Un certain nombre d'outils ont été mis en place pour améliorer cette situation. Le premier outil de ce type était le mod perl d'Apache , qui cherchait à résoudre l'une des raisons les plus courantes pour lesquelles les petits programmes Perl étaient invoqués rapidement : le développement Web CGI . ActivePerl , via Microsoft ISAPI , fournit des améliorations de performances similaires. [111]

Une fois le code Perl compilé, il y a une charge supplémentaire pendant la phase d'exécution qui n'est généralement pas présente pour les programmes écrits dans des langages compilés tels que C ou C++. Des exemples d'une telle surcharge incluent l'interprétation du bytecode , la gestion de la mémoire par comptage de références et la vérification de type dynamique. [112]

Optimisation

Les routines les plus critiques peuvent être écrites dans d'autres langages (tels que C ), qui peuvent être connectés à Perl via de simples modules Inline ou le mécanisme XS , plus complexe mais flexible . [113]

Perl 5

Perl 5, le langage généralement appelé "Perl", continue d'être activement développé. Perl 5.12.0 est sorti en avril 2010 avec quelques nouvelles fonctionnalités influencées par la conception de Perl 6, [47] [114] suivi de Perl 5.14.1 (sorti le 17 juin 2011), Perl 5.16.1 (sorti le 9, 2012. [115] ) et Perl 5.18.0 (publié le 18 mai 2013). Les versions de développement de Perl 5 sont publiées sur une base mensuelle, les versions majeures étant publiées une fois par an. [116]

La proportion relative de recherches sur Internet pour "programmation Perl", par rapport à des recherches similaires pour d'autres langages de programmation, a régulièrement diminué, passant d'environ 10% en 2005 à environ 2% en 2011, à environ 0,7% en 2020. [117]

Raku (Perl 6)

Camelia , le logo du projet Perl 6 [118]

Lors de la conférence Perl de 2000 , Jon Orwant a plaidé en faveur d'une nouvelle initiative majeure en matière de langage. [119] Cela a conduit à la décision de commencer à travailler sur une refonte du langage, qui s'appellera Perl 6. Des propositions de nouvelles fonctionnalités du langage ont été sollicitées auprès de la communauté Perl dans son ensemble, qui a soumis plus de 300 RFC . [120]

Wall a passé les années suivantes à digérer les RFC et à les synthétiser dans un cadre cohérent pour Perl 6. Il a présenté sa conception pour Perl 6 dans une série de documents appelés "apocalypses" - numérotés pour correspondre aux chapitres de Programming Perl . Depuis janvier 2011 , la spécification en développement de Perl 6 a été encapsulée dans des documents de conception appelés Synopses - numérotés pour correspondre aux Apocalypses. [121]

Le travail de thèse de Bradley M. Kuhn , supervisé par Wall, a envisagé l'utilisation possible de la machine virtuelle Java comme runtime pour Perl. [122] La thèse de Kuhn a montré que cette approche était problématique. En 2001, il a été décidé que Perl 6 fonctionnerait sur une machine virtuelle multilingue appelée Parrot . Cela signifie que d'autres langages ciblant le Parrot obtiendront un accès natif au CPAN , permettant un certain niveau de développement inter-langage. [ citation nécessaire ]

En 2005, Audrey Tang a créé le projet Pugs , une implémentation de Perl 6 en Haskell . Cela a agi et continue d'agir comme une plate-forme de test pour le langage Perl 6 (séparée du développement de l'implémentation réelle) - permettant aux concepteurs de langage d'explorer. Le projet Pugs a engendré une communauté interlangage Perl/Haskell active centrée autour du canal IRC Libera Chat #raku. De nombreuses influences de programmation fonctionnelle ont été absorbées par l'équipe de conception de Perl 6. [123]

En 2012, le développement de Perl 6 était centré principalement sur deux compilateurs : [124]

  1. Rakudo , une implémentation fonctionnant sur la machine virtuelle Parrot et la machine virtuelle Java. [125]
  2. Niecza , qui cible le Common Language Runtime .

En 2013, MoarVM ("Metamodel On A Runtime"), une machine virtuelle basée sur le langage C conçue principalement pour Rakudo a été annoncée. [126]

En octobre 2019, Perl 6 a été renommé Raku. [127]

Depuis 2017 , seules l'implémentation Rakudo et MoarVM sont en cours de développement actif, et d'autres machines virtuelles, telles que Java Virtual Machine et JavaScript , sont prises en charge. [128]

Perl 7

Perl 7 a été annoncé le 24 juin 2020 lors de « The Perl Conference in the Cloud » comme successeur de Perl 5. [63] [62] Basé sur Perl 5.32, Perl 7 est conçu pour être rétrocompatible avec le code Perl 5 moderne ; Le code Perl 5, sans en-tête passe- partout (pragma) doit être ajouté use compat::perl5;pour rester compatible, mais le code moderne peut supprimer une partie du passe-partout.

Communauté Perl

La culture et la communauté de Perl se sont développées parallèlement au langage lui-même. Usenet a été le premier lieu public dans lequel Perl a été introduit, mais au cours de son évolution, la communauté de Perl a été façonnée par la croissance de l'élargissement des services basés sur Internet, y compris l'introduction du World Wide Web. La communauté qui entoure Perl était, en fait, le sujet du premier discours de Wall sur "l'état de l'oignon". [129]

État de l'oignon

State of the Onion est le nom des résumés annuels de Wall sur les progrès de Perl et de sa communauté. Ils se caractérisent par son humour caractéristique, utilisant des références à la culture de Perl, à la culture des hackers au sens large, aux antécédents linguistiques de Wall, parfois à sa vie de famille et parfois même à ses origines chrétiennes. [130]

Chaque exposé est d'abord donné lors de diverses conférences Perl et est finalement également publié en ligne.

Perl

JAPH

Dans les e-mails, Usenet et les babillards électroniques, les programmes " Just another Perl hacker " (JAPH) sont une tendance courante, initiée par Randal L. Schwartz , l'un des premiers formateurs professionnels Perl. [131] Dans le jargon de la culture Perl, les programmeurs Perl sont connus sous le nom de hackers Perl, et de cela découle la pratique d'écrire des programmes courts pour imprimer la phrase "Just another Perl hacker". Dans l'esprit du concept original, ces programmes sont modérément obscurcis et suffisamment courts pour tenir dans la signature d'un e-mail ou d'un message Usenet. Le JAPH "canonique" tel que développé par Schwartz inclut la virgule à la fin, bien que cela soit souvent omis. [132]

Golf perlé

Le "golf" en Perl est le passe-temps consistant à réduire au strict minimum le nombre de caractères ("coups de touches") utilisés dans un programme Perl, de la même manière que les joueurs de golf cherchent à tirer le moins de coups possible dans un tour. La première utilisation de l'expression [133] soulignait la différence entre le code piéton destiné à enseigner à un nouveau venu et les hacks laconiques susceptibles d'amuser les programmeurs Perl expérimentés, un exemple de ces derniers étant les JAPH qui étaient déjà utilisés dans les signatures dans les messages Usenet et ailleurs. Des cascades similaires avaient été un passe-temps sans nom dans la langue APL au cours des décennies précédentes. L'utilisation de Perl pour écrire un programme qui effectuait le cryptage RSA a suscité un intérêt généralisé et pratique pour ce passe-temps. [134]Au cours des années suivantes, le terme " code golf " a été appliqué au passe-temps dans d'autres langues. [135] Une Perl Golf Apocalypse a eu lieu lors de la Perl Conference 4.0 à Monterey, en Californie, en juillet 2000.

Obfuscation

Comme avec C, les compétitions de code obscurci étaient un passe-temps bien connu à la fin des années 1990. Le concours Obfuscated Perl était un concours organisé par The Perl Journal de 1996 à 2000 qui faisait de la flexibilité syntaxique de Perl une vertu suprême. Des prix ont été décernés pour des catégories telles que "les plus puissants" - programmes qui utilisaient efficacement l'espace - et "meilleure signature à quatre lignes" pour les programmes qui tiennent sur quatre lignes de 76 caractères dans le style d'un bloc de signature Usenet . [136]

Poésie

La poésie Perl est la pratique consistant à écrire des poèmes qui peuvent être compilés sous forme de code Perl légal, par exemple la pièce connue sous le nom de Black Perl . La poésie Perl est rendue possible par le grand nombre de mots anglais utilisés dans la langue Perl. De nouveaux poèmes sont régulièrement soumis à la communauté de PerlMonks . [137]

Perl sur IRC

Un certain nombre de canaux IRC offrent un support pour Perl et certains de ses modules.

Réseau CRI Chaînes
irc.libera.chat #perl #raku
irc.perl.org #moose #poe #catalyst #dbix-class #perl-help #distzilla #epo #corehackers #sdl #win32 #toolchain #padre #dancer
irc.slashnet.org #perlmonks
irc.oftc.net #perl #debian-perl (packaging des modules Perl pour Debian)
irc.efnet.net #perlhelp
irc.rizon.net #perl

CPAN Acme

Il existe également de nombreux exemples de code écrit uniquement pour le divertissement sur le CPAN . Lingua::Romana::Perligata, par exemple, permet d'écrire des programmes en latin . [138] Lors de l'exécution d'un tel programme, le module traduit son code source en Perl normal et l'exécute. [ citation nécessaire ]

La communauté Perl a mis de côté l'espace de noms " Acme " pour les modules de nature amusante (mais sa portée s'est élargie pour inclure du code exploratoire ou expérimental ou tout autre module qui n'est pas destiné à être utilisé en production). Certains des modules Acme sont délibérément implémentés de manière amusante. Cela inclut Acme::Bleach, l'un des premiers modules de l' espace de Acme::noms, [139] qui permet au code source du programme d'être « blanchi » (c'est-à-dire que tous les caractères sont remplacés par des espaces) tout en continuant à fonctionner. [ citation nécessaire ]

Exemple de code

Dans les anciennes versions de Perl, on écrirait le programme Hello World comme suit :

print  "Hello, World!\n" ;

Voici un programme Perl plus complexe, qui décompte les secondes à partir d'une valeur de départ donnée :

#!/usr/bin/perl 
utilise  strict ; 
utiliser les  avertissements ;

mon  (  $restant ,  $total  );

$restant  =  $total  =  décalage ( @ARGV );

STDOUT -> autoflush ( 1 );

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

imprime  "\n" ;

L'interpréteur perl peut également être utilisé pour des scripts ponctuels sur la ligne de commande. L'exemple suivant (appelé à partir d'un shell compatible sh, tel que Bash) traduit la chaîne "Bob" dans tous les fichiers se terminant par .txt dans le répertoire courant en "Robert":

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

Critique

Perl a été qualifié de « bruit de ligne » et de langage en écriture seule par ses détracteurs. La première mention de ce type se trouve dans la première édition du livre Learning Perl , un livre didactique de Perl 4 écrit par Randal L. Schwartz , [140] dans le premier chapitre duquel il déclare : "Oui, parfois Perl ressemble à du bruit de ligne pour le non initié, mais pour le programmeur Perl chevronné, cela ressemble à un bruit de ligne à somme de contrôle avec une mission dans la vie." [141] Il a également déclaré que l'accusation selon laquelle Perl est un langage en écriture seule pourrait être évitée en codant avec "un soin approprié". [141] Le document de présentation de Perl perlintro déclare que les noms de "magie" intégréeles variables "ressemblent à de la ponctuation ou à du bruit de ligne". [142] Cependant, le module d'anglais propose à la fois des alternatives longues et courtes en anglais. Le document perlstyle indique que le bruit de ligne dans les expressions régulières pourrait être atténué en utilisant le /xmodificateur pour ajouter des espaces. [143]

Selon la FAQ Perl 6 , Perl 6 a été conçu pour atténuer "les suspects habituels" qui suscitent l'allégation de "bruit de ligne" des critiques de Perl 5, y compris la suppression de "la majorité des variables de ponctuation" et la désinfection de la syntaxe regex . [144] La FAQ de Perl 6 déclare également que ce qui est parfois appelé le bruit de ligne de Perl est "la syntaxe réelle de la langue" tout comme les gérondifs et les prépositions font partie de la langue anglaise . [144] Dans un article de blog de décembre 2012, malgré l'affirmation selon laquelle "Rakudo Perl 6 a échoué et continuera d'échouer à moins qu'il ne soit supervisé par un adulte", chromatiquea déclaré que la conception de Perl 6 a une "grammaire bien définie" ainsi qu'un "système de types amélioré, un système d'objets unifié avec un métamodèle intelligent, des métaopérateurs et un système de contexte plus clair qui fournit des subtilités telles que la paresse omniprésente " . [145] Il a également déclaré que "Perl 6 a une cohérence et une consistance qui manquent à Perl 5". [145]

Voir aussi

Références

  1. ^ un b "v13i001 : Perl, un "remplacement" pour awk et sed, Part01/10" . archives comp.sources.unix . Consulté le 11 août 2021 .
  2. ^ "Perl 5.34.0 est maintenant disponible !" . www.nntp.perl.org . Consulté le 21 mai 2021 .
  3. ^ "Perl 5.32.1 est maintenant disponible !" . www.nntp.perl.org. Archivé de l'original le 24 janvier 2021 . Consulté le 24 janvier 2021 .
  4. ^ "Perl 5.35.9 est maintenant disponible !" . www.nntp.perl.org . Consulté le 24 février 2022 .
  5. ^ un b " La " Licence Artistique " - dev.perl.org " . dev.perl.org . Archivé de l'original le 24 juillet 2018 . Consulté le 24 juin 2016 .
  6. ^ a b Artistique Archivé le 25 juillet 2018 à la Wayback Machine - fichier sur le référentiel git Perl 5
  7. ^ un b "l'Autorisation de Perl" . dev.perl.org. Archivé de l'original le 22 janvier 2011 . Consulté le 8 janvier 2011 .
  8. ^ Larry Wall (12 décembre 2007). "La programmation est difficile, allons-y Scripting ..." Archivé de l'original le 28 juillet 2017 . Consulté le 14 avril 2019 . Tous les concepteurs de langage ont leurs idiosyncrasies occasionnelles. Je suis juste meilleur que la plupart.
  9. ^ "À propos de Perl" . perl.org. Archivé de l'original le 6 novembre 2015 . Consulté le 20 avril 2013 . "Perl" est une famille de langages, "Perl 6" fait partie de la famille, mais c'est un langage à part qui a sa propre équipe de développement. Son existence n'a pas d'impact significatif sur le développement continu de "Perl 5".
  10. ^ "Chemin vers Raku" . GitHub. Archivé de l'original le 12 novembre 2020 . Consulté le 14 janvier 2021 . Ce document décrit les étapes à suivre pour effectuer un renommage de Perl 6 en Raku
  11. ^ Lapworth, Lion. "Questions générales sur Perl" . FAQ sur Perl . Perl.org. Archivé de l'original le 22 juin 2013 . Consulté le 24 février 2012 .
  12. ^ "perl (1) : Langage pratique d'extraction/rapport - page de manuel Linux" . Linux.die.net. Archivé de l'original le 22 juin 2013 . Consulté le 23 juillet 2013 .
  13. ^ Sheppard, Doug (16 octobre 2000). "Introduction du débutant à Perl" . dev.perl.org. Archivé de l'original le 5 juin 2011 . Consulté le 8 janvier 2011 .
  14. ^ Ashton, Elaine (1999). "La chronologie de Perl et sa culture (v3.0_0505)" . Archivé de l'original le 11 janvier 2013 . Récupéré le 12 mars 2004 .
  15. ^ un mur bcd , Larry ; Christiansen, Tom; Orwant, Jon (juillet 2000). Programmation Perl, troisième édition . O'Reilly Media . ISBN 978-0-596-00027-1.
  16. ^ "Évaluations de langue" . Archivé de l'original le 10 mars 2015 . Consulté le 30 janvier 2015 . Le point fort de Perl est ses fonctionnalités intégrées extrêmement puissantes pour le traitement dirigé par des modèles de formats de données textuels orientés ligne; il est inégalé à cela.
  17. ^ "Vous avez utilisé Perl pour écrire QUOI ?!" . 24 janvier 2008. Archivé de l'original le 4 février 2015 . Consulté le 4 février 2015 . perl a toujours été le langage de référence pour toute tâche impliquant une entrée de correspondance de modèles
  18. ^ "L'importance de Perl" . Archivé de l'original le 2 février 2015 . Consulté le 4 février 2015 . La capacité inégalée de Perl à traiter du texte...
  19. ^ Smith, Roderick W. (21 juin 2002). Mise en réseau Linux avancée . Addison-Wesley Professionnel. p. 594 . ISBN 978-0-201-77423-8.
  20. ^ Sheppard, Doug (16 octobre 2000). "Introduction du débutant à Perl" . O'Reilly Media . Archivé de l'original le 4 juin 2008 . Récupéré le 27 juillet 2008 .
  21. ^ Raymond, Éric (23 décembre 2003). "Tronçonneuse de l'armée suisse" . Le fichier Jargon . Archivé de l'original le 14 août 2018 . Consulté le 29 novembre 2014 .
  22. ^ Léonard, Andrew. "La joie de Perl" . Salon.com . Archivé de l'original le 6 juillet 2012 . Consulté le 5 juin 2012 .
  23. ^ "Comment les programmes sont mesurés | Jeu de repères de langage informatique" . benchmarksgame-team.pages.debian.net . Archivé de l'original le 12 juillet 2020 . Consulté le 5 octobre 2020 .
  24. ^ "RSA en 3 lignes de perl - Everything2.com" . tout2.com . Archivé de l'original le 8 octobre 2020 . Consulté le 5 octobre 2020 .
  25. ^ Richardson, Marjorie (1er mai 1999). "Larry Wall, le gourou de Perl" . Revue Linux . Archivé de l'original le 22 juin 2013 . Consulté le 3 janvier 2011 .
  26. ^ "perlfaq1 : Quelle est la différence entre "perl" et "Perl" ?" . perldoc.perl.org - documentation Perl 5 version 12.2 . Archivé de l'original le 12 mai 2013 . Consulté le 4 juin 2007 .
  27. ^ Schwartz, Randal ; foy, brian ; Phoenix, Tom (16 juin 2011). Apprentissage de Perl . O'Reilly Media, Inc. p. 4 . ISBN 978-1449313142. Perl est parfois appelé le "langage pratique d'extraction et de rapport", bien qu'il ait également été appelé un "listeur de déchets pathologiquement éclectique", entre autres extensions. C'est en fait un backronyme, pas un acronyme, puisque Larry Wall, le créateur de Perl, a proposé le nom en premier et l'extension plus tard. C'est pourquoi "Perl" n'est pas en majuscules. Il ne sert à rien de prétendre que l'expansion est correcte : Larry approuve les deux.
  28. ^ Mur, Larry . "perl - L'interpréteur de langage Perl" . Documentation Perl 5 version 12.2 . Archivé de l'original le 22 juin 2013 . Récupéré le 26 janvier 2011 .
  29. ^ "Archives perl.perl5.porters" . perl.org. Archivé de l'original le 1er mai 2011 . Consulté le 13 janvier 2011 .
  30. ^ "perlhist - les enregistrements d'historique de Perl" . Documentation Perl 5 version 12.2 . perldoc.perl.org. Archivé de l'original le 13 janvier 2011 . Récupéré le 21 janvier 2011 .
  31. ^ "CPAN" . CPAN . Archivé de l'original le 3 octobre 2019 . Consulté le 8 mai 2017 .
  32. ^ un b "perl5004delta - quoi de neuf pour perl5.004" . Documentation Perl 5 version 12.2 . perldoc.perl.org. Archivé de l'original le 27 février 2011 . Consulté le 8 janvier 2011 .
  33. ^ Patwardhan, Nathan; Siever, Ellen; Spainhour, Stephen (2002). Perl en bref, deuxième édition . O'Reilly Media . ISBN 978-0-596-00241-1.
  34. ^ "perl5005delta - quoi de neuf pour perl5.005" . Documentation Perl 5 version 12.2 . perldoc.perl.org. Archivé de l'original le 3 février 2011 . Récupéré le 21 janvier 2011 .
  35. ^ "perlhist - les enregistrements de l'historique de Perl" . www.cpan.org. Archivé de l'original le 16 septembre 2020 . Consulté le 2 juin 2020 .
  36. ^ "Source Perl" . www.cpan.org. Archivé de l'original le 1 juin 2017 . Consulté le 2 juin 2020 .
  37. ^ "perl56delta - quoi de neuf pour perl v5.6.0" . Documentation Perl 5 version 12.2 . perldoc.perl.org. Archivé de l'original le 2 février 2011 . Récupéré le 21 janvier 2011 .
  38. ^ "perl56delta - quoi de neuf pour perl v5.6.x" . Documentation Perl 5 version 12.2 . perldoc.perl.org. Archivé de l'original le 18 novembre 2010 . Récupéré le 21 janvier 2011 .
  39. ^ Mur, Larry. "Apocalypse 1 : Le Truand, le Brut et le Bon" . Archivé de l'original le 23 novembre 2010 . Consulté le 8 janvier 2011 .
  40. ^ "perl58delta - quoi de neuf pour perl v5.8.0" . Documentation Perl 5 version 12.2 . perldoc.perl.org. Archivé de l'original le 21 novembre 2010 . Récupéré le 21 janvier 2011 .
  41. ^ "Un plan pour les carlins" . O'Reilly Media . 3 mars 2005. Archivé de l'original le 8 septembre 2012 . Consulté le 27 janvier 2011 .
  42. ^ Tang, Audrey (21 avril 2010). "Re : Comment implémenter Perl 6 en dix ans" . PerlMonks . Archivé de l'original le 11 mai 2011 . Consulté le 3 janvier 2011 .
  43. ^ Geoff Broadwell (8 août 2005), OSCON 4.4: Inside Ponie, the Bridge from Perl 5 to Perl 6 , O'Reilly ONLamp Blog, archivé de l'original le 14 mars 2012 , récupéré le 27 juin 2016
  44. ^ Jesse Vincent (23 août 2006), Ponie a été mise au pâturage , The Perl Foundation, archivé de l'original le 27 juin 2009 , récupéré le 15 janvier 2019
  45. ^ "perl5100delta - quoi de neuf pour perl 5.10.0" . Documentation Perl 5 version 12.2 . perldoc.perl.org. Archivé de l'original le 21 décembre 2010 . Consulté le 8 janvier 2011 .
  46. ^ "perlsyn - Syntaxe Perl" . Documentation Perl 5 version 12.2 . perldoc.perl.org. Archivé de l'original le 26 août 2013 . Récupéré le 21 janvier 2011 .
  47. ^ un b "perl5120delta - quoi de neuf pour perl v5.12.0" . Documentation Perl 5 version 12.2 . perldoc.perl.org. Archivé de l'original le 4 janvier 2011 . Consulté le 8 janvier 2011 .
  48. ^ "perldelta - quoi de neuf pour perl v5.12.3" . Documentation Perl 5 version 12.2 . perldoc.perl.org. Archivé de l'original le 8 juin 2011 . Consulté le 8 janvier 2011 .
  49. ^ "perl5140delta - quoi de neuf pour perl v5.14.0 - metacpan.org" . metacpan.org . Archivé de l'original le 25 juillet 2018 . Consulté le 22 juillet 2017 .
  50. ^ un b "perldelta - quoi de neuf pour perl v5.16.0" . Documentation Perl 5 version 16.0 . metacpan.org. Archivé de l'original le 28 juillet 2020 . Consulté le 21 mai 2012 .
  51. ^ "perl5180delta - quoi de neuf pour perl v5.18.0 - Langage de programmation Perl" . Documentation Perl 5 version 18.0 . metacpan.org. Archivé de l'original le 29 octobre 2013 . Consulté le 27 octobre 2013 .
  52. ^ "perl5200delta - quoi de neuf pour perl v5.20.0 - Langage de programmation Perl" . Documentation Perl 5 version 20.0 . metacpan.org. Archivé de l'original le 27 mai 2014 . Consulté le 27 mai 2014 .
  53. ^ Jalons de la Renaissance de Perl - Programmation Perl moderne Archivé le 27 octobre 2012 à la Wayback Machine . Modernperlbooks.com. Consulté le 17/07/2013.
  54. ^ Préface (Modern Perl 2011-2012) Archivé le 28 septembre 2012 à la Wayback Machine . Modernperlbooks.com. Consulté le 17/07/2013.
  55. ^ Édition Modern Perl 2011-2012 par chromatique | Onyx Neon Press Archivé le 22 décembre 2011 à la Wayback Machine . Onyxneon.com. Consulté le 17/07/2013.
  56. ^ "Perl éclairé" . Perle éclairée . Archivé de l'original le 5 février 2014 . Consulté le 28 septembre 2012 .
  57. ^ "YAPC :: NA 2013 - 3-5 juin, Austin, Texas" . Yapcna.org. 4 juin 2013. Archivé de l'original le 22 juin 2013 . Consulté le 11 avril 2014 .
  58. ^ Petit, Stevan (8 février 2013). "Qu'est-ce que Moe (une clarification) | Stevan Little" . Blogs.perl.org. Archivé de l'original le 19 décembre 2013 . Consulté le 11 avril 2014 .
  59. ^ "p2 sur la potion" . Perl11.org. 7 février 2004. Archivé de l'original le 24 septembre 2013 . Consulté le 11 avril 2014 .
  60. ^ "goccy/gperl 路 GitHub" . GitHub.com. Archivé de l'original le 23 février 2015 . Consulté le 11 avril 2014 .
  61. ^ "rperl" . RPerl.org. Archivé de l'original le 18 octobre 2014 . Consulté le 11 août 2014 .
  62. ^ un b "Perl 7 a annoncé à la Conférence de Perl dans le Nuage" . perlfoundation.org. 24 juin 2020. Archivé de l'original le 26 juin 2020 . Consulté le 24 juin 2020 .
  63. ^ un b "Annoncer Perl 7" . perl.com. 24 juin 2020. Archivé de l'original le 24 juin 2020 . Consulté le 24 juin 2020 .
  64. ^ Nicholas Clark (9 mai 2021). "Réunion du Conseil de pilotage #019 2021-05-06" . www.nntp.perl.org . Archivé de l'original le 18 mai 2021 . Consulté le 17 mai 2021 . Le plan reste qu'il y aura une amélioration de Perl 7, mais pas immédiatement après la sortie de la version 5.34.0. ... Nous ne pensons pas pouvoir livrer [Perl 7] en 12 mois. 
  65. ^ Préparation pour Perl 7d . leanpub.com. 24 juin 2020. Archivé de l'original le 25 juin 2020 . Consulté le 24 juin 2020 .
  66. ^ un b Schwartz, Randal L ; Phénix, Tom ; Foy, Brian (6 décembre 2007). Apprentissage de Perl, troisième édition . ISBN 978-0-596-00132-2.
  67. ^ un b "L'Utilisation de Perl Camel et l'Information de Marque" . O'Reilly Media . Archivé de l'original le 25 avril 2018 . Consulté le 9 janvier 2011 .
  68. ^ "Marque Perl" . La Fondation Perl . Archivé de l'original le 3 mai 2011 . Consulté le 9 janvier 2011 .
  69. ^ Gillmore, Dan (25 octobre 1998). "République de Perl" . Tribune de Chicago . Archivé de l'original le 30 avril 2011 . Consulté le 10 janvier 2011 .
  70. ^ Riedel, Sébastien (18 janvier 2012). "Perl 5 Raptor" . Sébastien Riedel . Archivé de l'original le 11 juin 2018 . Consulté le 12 novembre 2017 .
  71. ^ Truite, Matt (16 juin 2005). "État du Velociraptor - Phase deux" . Shadowcat Systems Limited . Archivé de l'original le 13 novembre 2017 . Consulté le 12 novembre 2017 .
  72. ^ Nagpal, DP (2010). Technologie de conception Web . Inde : S. Chand. p. 700. ISBN 978-8121927635.
  73. ^ "titre inconnu". 10 mai 1997. Usenet : [email protected] . [ lien mort ]
  74. ^ Mur, Larry. "perl - L'interpréteur de langage Perl 5 - Navigateur Perldoc" . perldoc.perl.org . Consulté le 24 juin 2021 .
  75. ^ Mur, Larry (1er mars 1997). « Pourquoi es-tu ? » . Revue Linux . Archivé de l'original le 9 décembre 2010 . Récupéré le 13 mars 2011 .
  76. ^ "perlfunc - Fonctions intégrées Perl" . Documentation Perl 5 version 12.2 . perldoc.perl.org. Archivé de l'original le 6 janvier 2011 . Consulté le 10 janvier 2011 .
  77. ^ "Spécification Perl 6" . Le projet Perl 6. Archivé de l'original le 2 décembre 2009 . Consulté le 27 janvier 2011 .
  78. ^ "Compilateurs Perl 6" . Le projet Perl 6. Archivé de l'original le 2 décembre 2009 . Consulté le 27 janvier 2011 .
  79. ^ Gilmore, WJ (2010). Débuter PHP et MySQL : de novice à professionnel, quatrième édition . Apress. p. 484 . ISBN 978-1-4302-3114-1.
  80. ^ "IMDb Helpdesk : quel logiciel/matériel utilisez-vous pour faire fonctionner le site ?" . Base de données de films Internet . Archivé de l'original le 9 mars 2017 . Consulté le 12 février 2011 .
  81. ^ DuckDuckGo gère une grande quantité de requêtes de recherche à 4,5 millions de requêtes par jour. https://duckduckgo.com/traffic.html Archivé le 15 février 2012 auxarchives Web de la Bibliothèque du Congrès
  82. ^ DuckDuckGo utilise Perl https://web.archive.org/web/20101231135106/http://www.gabrielweinberg.com/blog/2009/03/duck-duck-go-architecture.html
  83. ^ "FAQ Perl" . Archivé de l'original le 6 août 2019 . Consulté le 6 août 2019 . Perl est largement utilisé dans Debian. Non seulement certaines fonctions principales sont écrites en Perl, mais il y a plus de 700 paquets dans unstable qui ont perl dans leur nom (mars 2004).
  84. ^ "Livres Perl - Livre: Données Munging avec Perl" . Perl.org . Archivé de l'original le 7 septembre 2011 . Consulté le 30 décembre 2010 .
  85. ^ Une description de l'interpréteur Perl 5 peut être trouvée dans Programming Perl , 3rd Ed., chapitre 18. Voir en particulier la page 467, qui distingue soigneusement la phase d'exécution et la phase de compilation du temps d' exécution et du temps de compilation . Perl "temps" et "phase" sont souvent confondus.
  86. ^ "perlguts - Introduction à l'API Perl - Navigateur Perldoc" . perldoc.perl.org . Consulté le 24 janvier 2022 .
  87. ^ Schwartz, Randal . "Sur l'analyse de Perl" . Archivé de l'original le 27 septembre 2007 . Récupéré le 3 janvier 2007 .
  88. ^ "Le Journal Perl #19/9.26" (PDF) . O'Reilly Media . Consulté le 4 février 2011 .
  89. ^ Kennedy, Adam (2006). "PPI—Parser, analyser et manipuler Perl (sans perl)" . CPAN . Archivé de l'original le 3 septembre 2013 . Consulté le 16 septembre 2013 .
  90. ^ "Le Théorème de Rice". La revue Perl . 4 (3) : 23-29. Été 2008.et "Perl est indécidable". La revue Perl . 5 : 7–11. Automne 2008., disponible en ligne sur Kegler, Jeffrey. "Perl et indécidabilité" . Archivé de l'original le 17 août 2009 . Récupéré le 4 janvier 2009 .
  91. ^ Hietaniemi, Jarkko (1998). "Ports Perl (distributions binaires)" . CPAN.org. Archivé de l'original le 18 avril 2006 . Consulté le 16 avril 2006 .
  92. ^ "Les Pages MacPerl" . Logiciel gratuit Prime Time. 1997. Archivé de l'original le 18 janvier 2006 . Récupéré le 18 janvier 2006 .
  93. ^ "Ports Perl (distributions binaires)" . CPAN . Archivé de l'original le 18 avril 2006 . Consulté le 27 janvier 2011 .
  94. ^ "ActivePerl est Perl pour Windows, Mac, Linux, AIX, HP-UX et Solaris" . Logiciel ActiveState . Archivé de l'original le 31 mars 2016 . Consulté le 9 janvier 2011 .
  95. ^ "Utiliser PPM" . Logiciel ActiveState . Archivé de l'original le 27 août 2010 . Consulté le 9 janvier 2011 .
  96. ^ "Au revoir PPM, bonjour l'outil d'état" . activestate.com . 23 juillet 2019. Archivé de l'original le 28 juillet 2020 . Consulté le 16 avril 2020 .
  97. ^ lisezmoi.txt
  98. Descartes, Alligator ; Bunce, Tim (2000). Programmation du Perl DBI : [programmation de bases de données avec Perl] (1 éd.). Pékin [ua] : O'Reilly. ISBN 978-1-56592-699-8.
  99. ^ "Programmation Perl - Principes des langages de programmation" . sites.google.com . Consulté le 18 mai 2021 .
  100. ^ Bunce, Tim; Descartes, Alligator (4 février 2000). Programmation du Perl DBI : Programmation de base de données avec Perl . "O'Reilly Media, Inc.". ISBN 978-1-4493-1536-8.
  101. ^ Bekman, Stas. "Travailler efficacement avec les bases de données sous mod_perl" . Archivé de l'original le 22 août 2007 . Consulté le 1er septembre 2007 .
  102. ^ Pachev, Sasha (10 avril 2007). Comprendre les composants internes de MySQL : découvrir et améliorer une excellente base de données . "O'Reilly Media, Inc.". ISBN 978-0-596-55280-0.
  103. ^ "Class :: DBI - Abstraction de base de données simple - metacpan.org" . metacpan.org . Archivé de l'original le 6 août 2020 . Consulté le 8 avril 2020 .
  104. ^ "Rose :: DB :: Object - Mappeur objet-relationnel (ORM) extensible et haute performance. - metacpan.org" . metacpan.org . Archivé de l'original le 6 août 2020 . Consulté le 8 avril 2020 .
  105. ^ "T sql interrogeant la référence du développeur" . pdfpremiumfree.com . Consulté le 18 mai 2021 .
  106. ^ "Alioth : Le jeu des repères de langage informatique : informations sur le projet" . Alioth . Archivé de l'original le 25 mars 2013 . Consulté le 13 janvier 2011 .
  107. ^ "Quels programmes sont les plus rapides?" . Jeu de repères en langage informatique . Alioth . Archivé de l'original le 17 mai 2013 . Consulté le 13 janvier 2011 .
  108. ^ Leroy, Jean-Louis (1er décembre 2005). "Un départ opportun" . O'Reilly. Archivé de l'original le 13 juin 2006 . Récupéré le 22 mai 2006 .
  109. ^ Beattie, Malcolm & Enache Adrian (2003). "B::Bytecode Le moteur de bytecode du compilateur Perl" . CPAN . Archivé de l'original le 30 mars 2021 . Consulté le 16 septembre 2013 .
  110. ^ Schwartz, Randal; Foy, Brian ; Phoenix, Tom (23 juin 2011). Apprentissage de Perl . "O'Reilly Media, Inc.". ISBN 978-1-4493-0358-7.
  111. ^ Stein, Lincoln; MacEachern, Doug (1999). Écrire des modules Apache avec Perl et C : L'API Apache et Mod_perl . "O'Reilly Media, Inc.". ISBN 978-1-56592-567-0.
  112. ^ Bekman, Stas; Cholet, Éric (2003). Mod_perl pratique . "O'Reilly Media, Inc.". ISBN 978-0-596-00227-5.
  113. ^ Ingerson, Brian. "Inline-metacpan.org" . CPAN . Archivé de l'original le 13 juin 2013 . Récupéré le 26 janvier 2011 .
  114. ^ "Perl 5.12.0 publié - Mise à jour" . Heise Media Royaume-Uni. 13 avril 2010. Archivé de l'original le 19 avril 2010 . Consulté le 8 janvier 2011 .
  115. ^ "Perl 5.16.1 est sorti !" . 9 août 2012. Archivé de l'original le 2 décembre 2012 . Consulté le 26 août 2012 .
  116. ^ "Le train de libération imparable de Perl?" . LWN.net. 29 février 2012. Archivé de l'original le 22 août 2016 . Consulté le 28 mars 2012 .
  117. ^ Index des logiciels TIOBE (2020). " Index Perl de la communauté de programmation TIOBE " . Archivé de l'original le 25 février 2018 . Consulté le 6 février 2020 .
  118. ^ "Perl 6" . Le projet Perl 6. Archivé de l'original le 21 février 2011 . Consulté le 27 février 2011 .
  119. ^ Torkington, Nathan. "Transcription du discours de Larry" . nntp.perl.org. Archivé de l'original le 1er mai 2011 . Récupéré le 25 janvier 2011 .
  120. ^ "Perl6 - L'avenir de Perl" . www.java-samples.com . Consulté le 18 mai 2021 .
  121. ^ "Documentation officielle de Perl 6" . Le projet Perl 6. Archivé de l'original le 31 août 2009 . Récupéré le 25 janvier 2011 .
  122. ^ Kuhn, Bradley (janvier 2001). "Considérations sur le portage de Perl sur la machine virtuelle Java" . Université de Cincinnati. Archivé de l'original le 21 mars 2008 . Consulté le 28 juin 2008 . {{cite journal}}:Citer le journal nécessite |journal=( aide )
  123. ^ Chromatique (2015). Perl moderne . Bibliothèque pragmatique. ISBN 978-1-68050-088-2.
  124. ^ "Comparaison des fonctionnalités des compilateurs Perl 6" . Archivé de l'original le 11 août 2017 . Consulté le 28 mars 2012 .
  125. ^ Worthington, Jonathan (15 juillet 2013). "Rakudo JVM News : Plus de tests, plus des prototypes Thread et Promise" . 6 tripes . Archivé de l'original le 5 octobre 2013 . Consulté le 24 juillet 2013 .
  126. ^ Worthington, Jonathan (31 mai 2013). "MoarVM : Une machine virtuelle pour NQP et Rakudo" . 6 tripes . Archivé de l'original le 9 juillet 2013 . Consulté le 24 juillet 2013 .
  127. ^ "renommer-lwn" . Archivé de l'original le 17 octobre 2019 . Consulté le 10 novembre 2019 .
  128. ^ "rakudo/rakudo - GitHub" . GitHub.com. Archivé de l'original le 29 juillet 2017 . Consulté le 21 septembre 2013 .
  129. ^ Mur, Larry (22 mai 2014). "Culture Perl (AKA le premier état de l'oignon)" . Archivé de l'original le 22 mai 2014 . Consulté le 22 mai 2014 .
  130. ^ Mur de Larry. "2ème état de l'oignon" . Archivé de l'original le 17 juillet 2012 . Consulté le 12 octobre 2012 .(Rechercher 'église')
  131. ^ Randal L. Schwartz (2 mai 1999). "Qui est Just another Perl hacker ?" . Groupe de discussioncomp.lang.perl.misc . Usenet : [email protected] . Archivé de l'original le 8 juillet 2012 . Consulté le 5 décembre 2014 . 
  132. ^ Schwartz, Randal (31 mars 2005). "JAPH canonique" . PerlMonks . Archivé de l'original le 22 juillet 2011 . Consulté le 16 mai 2011 .
  133. ^ Greg Bacon (28 mai 1999). "Re : Incrémenter une valeur dans une tranche" . Groupe de discussioncomp.lang.perl.misc . Usenet : [email protected] . Archivé de l'original le 7 juillet 2011 . Récupéré le 12 juillet 2011 . 
  134. ^ Retour, Adam. "RSA en 5 lignes de perl" . Archivé de l'original le 19 janvier 2011 . Consulté le 10 janvier 2011 .
  135. ^ "Code Golf: Qu'est-ce que Code Golf?" . 29 degrés. 2007. Archivé de l'original le 13 janvier 2012 . Consulté le 26 novembre 2018 .
  136. ^ Gallo, Félix (2003). "Le concours Zeroth Obfuscated Perl" (PDF) . Dans Jon Orwant (éd.). Jeux, divertissements et culture Perl : le meilleur de la revue Perl . O'Reilly Media. Archivé de l'original (PDF) le 22 novembre 2009 . Consulté le 12 janvier 2011 .
  137. ^ "Poésie Perl" . PerlMonks . Archivé de l'original le 27 septembre 2007 . Consulté le 27 janvier 2011 .
  138. ^ Conway, Damien. "Lingua::Romana::Perligata -- Perl pour le XXI-ème siècle" . Archivé de l'original le 30 septembre 2007 . Consulté le 15 juin 2006 .
  139. ^ Brocard, Léon (22 mai 2014). "utiliser Perl ; Journal of acme" . GrnLight.net. Archivé de l'original le 22 mai 2014.
  140. ^ "Mise à jour du développeur". Mise à jour du développeur du Dr Dobb . Miller-Freeman. 2 . 1995.
  141. ^ un b Schwartz, Randal L. (1993). Apprentissage de Perl . O'Reilly & Associés. Bibcode : 1993lepe.book.....S .
  142. ^ "perlintro" . Documentation Perl 5 version 18.0 . Porteurs Perl 5 et perldoc.perl.org. Archivé de l'original le 9 janvier 2011 . Consulté le 30 juin 2013 .
  143. ^ "perlstyle" . Documentation Perl 5 version 18.0 . Porteurs Perl 5 et perldoc.perl.org. Archivé de l'original le 26 juin 2013 . Consulté le 30 juin 2013 .
  144. ^ un b « FAQ de Perl 6 » . Projet Perl 6. Archivé de l'original le 1er juillet 2013 . Consulté le 30 juin 2013 .
  145. ^ un b chromatique (31 décembre 2012). "L'implémentation de Perl 5 par rapport à Perl 6" . Archivé de l'original le 29 juillet 2013 . Consulté le 30 juin 2013 .

Lectures complémentaires

Liens externes