'>

langage de programmation Perl

 Perl est une famille de langages de haut niveau, polyvalents, interprétées programmation dynamique. Les langues de cette famille comprennent Perl 5 et Perl 6. [4]

Bien que Perl n'est pas officiellement un acronyme, [5] Il existe différents backronyms en usage, tels que:. Et d'extractions pratiques Reporting Language [6] Perl a été initialement développé par Larry Wall en 1987 comme un usage général langage de script Unix pour faire rapport faciliter le traitement. [7] Depuis lors, elle a subi de nombreuses modifications et révisions. La dernière révision majeure stable de Perl 5 est 5.18, sorti en mai 2013. Perl 6, qui a commencé comme une refonte de Perl 5 en 2000, a fini par devenir une langue distincte. Les deux langues continuent d'être développées indépendamment par différentes équipes de développement et libérale emprunter des idées de l'autre.

Les langues Perl empruntent les caractéristiques d'autres langages de programmation, y compris C, scripts shell (sh), AWK, et sed. [8] Ils fournissent puissantes installations de traitement de texte sans les limites arbitraires de longueur de données de nombreux outils Unix contemporains [9], facilitant facile manipulation de fichiers texte. Perl 5 a gagné une grande popularité dans les années 1990 comme un langage de script CGI, en partie grâce à ses capacités d'analyse. [10]

En plus de CGI, Perl 5 est utilisé pour la programmation graphique, l'administration système, la programmation réseau, de la finance, de la bioinformatique et d'autres applications. Il est surnommé "la tronçonneuse de l'armée suisse des langages de script" en raison de sa souplesse et de puissance, [11] et peut-être aussi en raison de sa supposée "laideur". [12] En 1998, il a également été désigné comme le "ruban adhésif qui retient Internet ensemble », en référence à son ubiquité et inélégance perçue.

Histoire
Les premières versions

Mur a commencé à travailler sur Perl en 1987, alors qu'il travaillait comme programmeur chez Unisys, [9] et la version 1.0 dans le groupe de comp.sources.misc publié le 18 Décembre 1987. [14] La langue augmenté rapidement au cours des prochaines années.

Perl 2, sorti en 1988, comportait un moteur d'expressions régulières mieux. Perl 3, sorti en 1989, a ajouté le support pour les flux de données binaires.

A l'origine la seule documentation de Perl est une page unique de l'homme (de plus en plus longue). En 1991, la programmation Perl, connu pour de nombreux programmeurs Perl comme le "Camel Book" en raison de sa couverture, a été publié et est devenu la référence de facto pour la langue. Dans le même temps, le numéro de version de Perl a été heurté à 4, pour ne pas marquer un changement majeur dans la langue, mais d'identifier la version qui a été bien documenté par le livre.
Au début Perl 5

Perl 4 a traversé une série de versions de maintenance, aboutissant à Perl 4.036 en 1993. À ce moment, Wall abandonné Perl 4 pour commencer le travail sur Perl 5. La conception initiale de Perl 5 a continué en 1994. La liste de diffusion perl5-porters a été créé en mai 1994 pour coordonner les travaux sur le portage de Perl 5 pour différentes plates-formes. Il reste le principal forum pour le développement, la maintenance et le portage de Perl 5. [15]

Perl 5.000 a été libéré le 17 Octobre 1994. [16] Il était une réécriture quasi complète de l'interprète, et il a ajouté de nombreuses nouvelles fonctionnalités à la langue, y compris des objets, des références, des variables lexicales (ma), et des modules. Surtout, modules fourni un mécanisme pour étendre la langue sans modifier l'interprète. Cela a permis à l'interprète principal de stabiliser, même si elle a permis aux programmeurs Perl ordinaires d'ajouter de nouvelles fonctionnalités de langage. Perl 5 est en développement actif depuis lors.

Perl 5.001 a été libéré le 13 Mars 1995. Perl 5.002 a été libéré le 29 Février 1996 avec la nouvelle fonctionnalité de prototypes. Cela a permis aux auteurs de modules pour faire des sous-programmes qui se sont comportés comme builtins Perl. Perl 5.003 a 25 Autorisation Juin 1996, comme une libération de sécurité.

L'un des événements les plus importants dans l'histoire Perl 5 a eu lieu à l'extérieur de la langue correcte et était la conséquence de son soutien de module. Le 26 Octobre 1995, le Comprehensive Perl Archive Network (CPAN) a été établi comme un référentiel pour les modules Perl et Perl lui-même;. Dès Avril 2012, il transporte plus de 24.500 modules de plus de 9.500 auteurs [17]

Perl 5.004 a été libéré le 15 mai 1997, et comprenait entre autres le package UNIVERSAL, donnant Perl un objet de base à laquelle toutes les classes ont été déduites automatiquement et la capacité d'exiger des versions de modules. Un autre développement important a été l'inclusion du module CGI.pm [18], ce qui a contribué à la popularité de Perl comme un langage de script CGI. [19]

Perl également désormais pris en charge fonctionnant sous d'autres systèmes d'exploitation Microsoft Windows et. [18]

Perl 5.005 a été libéré le 22 Juillet 1998. Cette version comprend plusieurs améliorations au moteur d'expressions rationnelles, de nouveaux crochets dans le backend par le B :: * modules, l'opérateur qr / / regex citation, une grande sélection d'autres nouveaux modules de base, et un soutien supplémentaire pour plusieurs systèmes d'exploitation, y compris BeOS. [20]
2000-présent

Perl 5.6 a été libéré le 22 Mars 2000. Des changements majeurs inclus le support 64 bits, représentation de chaîne Unicode, le support des grands fichiers (par exemple les fichiers de plus de 2 Gio) et le "notre" mot-clé. [21] [22] Lors de l'élaboration Perl 5.6, la décision a été prise de changer le régime des versions pour une plus semblable à d'autres projets open source, après 5.005_63, la prochaine version 5.5.640 est devenu, avec des plans pour les versions de développement d'avoir des nombres impairs et les versions stables à des numéros pairs.

En 2000, Wall a présenté une demande de propositions pour une nouvelle version de Perl de la communauté. Le processus a abouti à 361 RFC (Request for Comments) les documents qui devaient être utilisés pour guider le développement de Perl 6. En 2001 [23], les travaux ont commencé sur les apocalypses pour Perl 6, une série de documents destiné à résumer les demandes de changement et de présenter la conception de la prochaine génération de Perl. Ils ont été présentés comme un condensé des RFC, plutôt que d'un document officiel. À ce stade, Perl 6 n'existait que comme une description d'une langue.

Perl 5.8 a été publié le 18 Juillet 2002, et a eu des mises à jour presque chaque année depuis lors. La dernière version de Perl 5.8 est 5.8.9, sorti Décembre 14, 2008. Perl 5.8 meilleur support Unicode, a ajouté une nouvelle application IO, a ajouté une nouvelle implémentation du fil, une meilleure précision numérique, et a ajouté plusieurs nouveaux modules. [24] À partir de 2013 cette version reste la version la plus populaire de Perl et est utilisé par Red Hat 5, Suse 10, Solaris 10, HP-UX 11.33 et AIX 5.

En 2004, les travaux ont commencé sur les synopsis - l'origine des documents qui résument les Apocalypses, mais qui est devenu la spécification de la langue Perl 6. En Février 2005, le Audrey Tang a commencé à travailler sur roquets, un Perl 6 interprète écrit en Haskell. [25] Ce fut le premier effort concerté pour faire Perl 6 une réalité. Cet effort a décroché en 2006. [26]

Le 18 Décembre 2007, le 20e anniversaire de Perl 1.0, Perl 5.10.0 est sorti. Perl 5.10.0 inclus de nouvelles fonctionnalités notables, qui a rapproché Perl 6. Il s'agit notamment d'une instruction switch (appelé «donné» / «quand»), expressions mises à jour régulières, et l'opérateur de reconnaissance intelligente, «~ ~». [27] [28] Autour de ce même temps, le développement a commencé sérieusement à une autre mise en œuvre de Perl 6 connu comme Rakudo Perl, développé en tandem avec la machine virtuelle Parrot. En Novembre 2009, le Rakudo Perl a eu communiqués mensuels réguliers et est maintenant la mise en œuvre la plus complète de Perl 6.

Un changement majeur dans le processus de développement de Perl 5 a eu lieu avec Perl 5.11, la communauté du développement a opté pour un cycle de publication mensuelle des rejets de développement, avec un calendrier annuel des versions stables. Par ce plan, rejets ponctuels correction de bugs suivront les versions stables tous les trois mois.

Le 12 Avril 2010, Perl 5.12.0 est sorti. Améliorations fondamentales notables incluent une nouvelle syntaxe de package nom de la version, l'opérateur Yada Yada (destinée à marquer le code de l'espace réservé qui n'est pas encore mis en œuvre), les sténoses implicites, le respect intégral Y2038, regex conversion surcharge, le support de DTrace, et Unicode 5.2. [29] Sur Janvier 21 2011, Perl 5.12.3 est sorti, il contient des modules de mise à jour et quelques changements de documentation [30] Version 5.12.4 est sorti le 20 Juin 2011.. La dernière version de cette branche, 5.12.5, a été libéré le 10 Novembre 2012.

Le 14 mai 2011, Perl 5.14 est sorti. La dernière version de cette branche, 5.14.4, a été libéré le 10 Mars 2013.

Le 20 mai 2012, Perl 5.16 est sorti. Nouvelles caractéristiques notables comprennent la possibilité de spécifier une version donnée de perl que l'on veut imiter, permettant aux utilisateurs de mettre à niveau leur version de perl, mais toujours courir anciens scripts qui seraient normalement incompatibles. [31] Perl 5.16 met également à jour la base pour soutenir Unicode 6.1. [31]

Certains observateurs crédit la libération de Perl 5.10 avec le début du mouvement Perl moderne. [32] En particulier, cette expression désigne un type de développement qui englobe l'utilisation du CPAN, tire profit des développements récents dans la langue, et est rigoureux sur la création de code de haute qualité. [33] Alors que le livre "Modern Perl" [34] peut être le plus visible porte-étendard de cette idée, d'autres groupes comme l'Organisation Enlightened Perl [35] ont pris en main la cause.
Nom

Perl a été initialement nommé "Pearl". Mur voulait donner à la langue un nom court avec des connotations positives, il affirme qu'il considérait (et rejeté) chaque mot trois et quatre lettres dans le dictionnaire. Il a également considéré le nommer après que son épouse Gloria. Mur a découvert le langage de programmation PEARL existant avant la sortie officielle de Perl et a changé l'orthographe de son nom. [36]

Lorsqu'on se réfère à la langue, le nom est normalement capitalisée (Perl) comme nom propre. Lorsqu'il est fait référence au programme de l'interprète lui-même, le nom est souvent sans majuscule (perl) parce que la plupart des systèmes de fichiers Unix sont sensibles à la casse. Avant la publication de la première édition de la programmation Perl, il était courant de se référer à la langue comme perl, Randal L. Schwartz, cependant, capitalisé le nom de la langue dans le livre pour faire ressortir mieux quand composer. Cette affaire distinction a ensuite été documenté comme canonique. [37]

Il ya une certaine prétention sur le tout-caps orthographe "PERL", qui la documentation déclare erronée [37] et que certains membres de la communauté de base considèrent comme un signe de l'extérieur. [38] Le nom est parfois élargi comme extractions pratiques Langage de rapports et, mais c'est un backronym. [39] D'autres expansions ont été suggérés comme aussi canonique, y compris le sien humoristique Lister Pathologically Eclectic Rubbish du mur. [40] En effet, Wall affirme que le nom était destiné à inspirer de nombreuses expansions. [41]
Symbole Camel
Le symbole Camel utilisé par O'Reilly Media

Programming Perl, publié par O'Reilly Media, comporte une image d'un dromadaire sur la couverture et est communément appelé le "Camel Book". [42] Cette image d'un chameau est devenu un symbole officieux de Perl ainsi que d'un grand emblème de pirate, apparaissant sur les t-shirts et d'autres articles d'habillement.

O'Reilly possède l'image en tant que marque mais les licences pour une utilisation non commerciale, nécessitant seulement une reconnaissance et un lien vers www.perl.com. Licences pour usage commercial est décidée au cas par cas [43]. O'Reilly propose également «Programmation République de Perl" logos pour les sites non-commerciaux et «Powered by Perl" boutons pour un site qui utilise Perl [43].
symbole de l'oignon
Le logo d'oignon utilisé par la Fondation Perl

La Fondation Perl possède un autre symbole, un oignon, ce qui lui octroie des licences à ses filiales, Perl Mongers, PerlMonks, Perl.org et autres. [44] Le symbole est un calembour visuel sur perle oignon. [45]
Vue d'ensemble
Article principal: la structure du langage Perl

Selon Wall, Perl a deux slogans. Le premier est "Il ya plus d'une façon de le faire", communément connue sous le nom TMTOWTDI. Le deuxième slogan est "les choses faciles doivent être faciles et difficiles les choses devraient être possible". [9]
Traits

La structure générale de Perl dérive largement de C. Perl est de nature procédurale, avec des variables, des expressions, des déclarations d'affectation, les blocs délimité par des accolades, des structures de contrôle et sous-programmes.

Perl prend également des fonctionnalités de programmation shell. Toutes les variables sont marquées avec de grands sceaux, qui identifient clairement le type de données (par exemple, scalaire, un tableau de hachage) de la variable dans leur contexte. Surtout, sceaux permettent variables à être interpolées directement dans des chaînes. Perl a de nombreuses fonctions intégrées qui fournissent des outils souvent utilisés dans la programmation shell (bien que la plupart de ces outils sont mis en œuvre par des programmes externes à la coque) telles que le tri, et demandant à l'exploitation des installations du système.

Perl prend listes de Lisp, hash ("tableaux associatifs") de AWK et des expressions régulières de sed. Ceux-ci simplifient et facilitent beaucoup l'analyse, de manipulation de texte, et les tâches de gestion des données. Également partagé avec Lisp sont le rendement implicite de la dernière valeur dans un bloc, et le fait que toutes les déclarations ont une valeur, et sont donc aussi des expressions et peuvent être utilisés dans les grandes expressions elles-mêmes.

Fonctionnalités qui prennent en charge les structures de données complexes, les fonctions de première classe (c'est-à-fermetures comme valeurs), et un modèle de programmation orientée objet Perl 5 ajouté. Ceux-ci incluent des références, forfaits, méthode basée sur les classes d'expédition, et les variables de portée lexicale, avec les directives de compilation (par exemple, le pragma strict). Une caractéristique supplémentaire importante introduite avec Perl 5 a été la capacité à emballer le code sous forme de modules réutilisables. Mur a déclaré plus tard que «toute intention de Perl système modulaire de 5 était d'encourager la croissance de la culture Perl plutôt que le noyau Perl». [46]

Toutes les versions de Perl font données typage automatique et la gestion automatique de la mémoire. L'interprète connaît le type et les besoins de stockage de chaque objet de données dans le programme, elle alloue et libère stockage pour eux que nécessaire en utilisant un comptage de référence (si elle ne peut pas libérer des structures de données circulaires sans intervention manuelle). Les conversions de type juridique - par exemple, les conversions à partir du numéro de chaîne - se font automatiquement au moment de l'exécution; conversions de type illégales causent des erreurs fatales.
Conception

La conception de Perl peut être comprise comme une réponse à trois grandes tendances dans l'industrie de l'informatique: la baisse des coûts de matériel, la hausse des coûts de main-d'œuvre et des améliorations dans la technologie compilateur. De nombreux langages informatiques antérieurs, tels que Fortran et C, visait à faire un usage efficace de matériel informatique coûteux. En revanche, Perl est conçu pour une utilisation efficace de coûteux ordinateurs-programmeurs.

Perl possède de nombreuses fonctionnalités qui facilitent la tâche du programmeur au détriment d'une plus grande CPU et de mémoire. Il s'agit notamment de la gestion automatique de la mémoire; typage dynamique; chaînes, les listes et les tables de hachage, les expressions régulières; introspection et une fonction eval (). Perl suit la théorie des «pas de limites intégrée» [42], une idée similaire à une règle d'Infinity zéro.

Mur a été formé en tant que linguiste, et la conception de Perl est très informé par des principes linguistiques. Les exemples comprennent le codage de Huffman (constructions communes doivent être courts), une bonne fin de pondération (l'information importante devrait venir en premier), et une grande collection de primitifs de la langue. Perl favorise les constructions de langage qui sont concis et naturel pour l'homme d'écrire, même si elles compliquent l'interpréteur Perl.

La syntaxe de Perl reflète l'idée que «les choses qui sont différentes devraient être différent." [47] Par exemple, scalaires, des tableaux et des séries ont des sceaux leaders. indices de tableau et les clés de hachage utilisent différents types de supports. Strings et les expressions régulières ont des séparateurs standard. Cette approche peut être comparée avec des langages tels que Lisp, où le même concept S-expression et de la syntaxe de base sont utilisés à de nombreuses fins différentes.

Perl ne fait pas respecter tout paradigme de programmation particulier (procédurale et orientée objet, fonctionnel, ou autres) ou même exiger que le programmeur de choisir parmi eux.

Il existe un large plié pratique à la fois le langage Perl et de la communauté et de la culture qui l'entourent. La préface de programmation Perl commence ainsi: «. Perl est un langage pour faire votre travail» [9] Une conséquence de ceci est que Perl n'est pas un langage propre. Il inclut de nombreuses fonctionnalités, tolère des exceptions à ses règles, et emploie heuristiques pour résoudre les ambiguïtés syntaxiques. En raison de la nature pardonner du compilateur, des bogues peuvent parfois être difficiles à trouver. Documentation fonction des remarques de Perl sur le comportement de la variante de fonctions intégrées dans la liste et scalaire contextes que «En général, ils font ce que vous voulez, sauf si vous voulez la cohérence». [48]

Aucune spécification écrite ou standard pour le langage Perl existe pour les versions de Perl grâce à Perl 5, et il n'y a pas de plans pour créer un pour la version actuelle de Perl. Il n'y a eu qu'une seule mise en œuvre de l'interprète et la langue a évolué avec elle. Qui interprète, avec ses tests fonctionnels, se présente comme une spécification de facto de la langue. Perl 6, cependant, a commencé avec un cahier des charges [49], et plusieurs projets [50] visent à mettre en œuvre tout ou partie de la spécification.
Applications

Perl a de nombreuses et diverses applications, aggravée par la disponibilité de nombreux modules standard et un tiers.

Perl a principalement été utilisé pour écrire des scripts CGI: les grands projets écrits en Perl comprennent cPanel, Slash, Bugzilla, RT, TWiki, et Movable Type, les sites web à fort trafic qui utilisent Perl sont largement Amazon.com, bbc.co.uk, Priceline com., Craigslist [51], IMDb, [52] LiveJournal, Slashdot et Ticketmaster. Il est également un composant optionnel de la pile populaire de technologie LAMP pour le développement web, au lieu de PHP ou Python.

Perl est souvent utilisé comme un langage de colle, liant ensemble les systèmes et les interfaces qui n'ont pas été spécifiquement conçu pour interagir et pour "munging de données" [53], qui est, 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 forces sont intimement liés. La combinaison rend Perl a la langue tout usage populaire pour les administrateurs système, en particulier parce que les programmes courts, souvent appelés «programmes one-liner", peuvent être saisis et exécutés sur une seule ligne de commande.

Code Perl peut être faite portable sur Windows et Unix; tel code est souvent utilisée par les fournisseurs de logiciels (deux COTS et sur mesure) pour simplifier l'emballage et la maintenance des logiciels accumulations et le déploiement des scripts.

Des interfaces graphiques (GUI) peuvent être développées en utilisant Perl. Par exemple, Perl / Tk et wxPerl sont couramment utilisés pour permettre une interaction de l'utilisateur avec des scripts Perl. Cette interaction peut être synchrone ou asynchrone, en utilisant les rappels de mettre à jour l'interface graphique.
La mise en œuvre

Perl est implémenté comme un interpréteur de base, écrit en C, avec une grande collection de modules écrits en Perl et C. En 2010, la version stable (5.12.3) est de 14,2 Mo lorsqu'il est emballé dans un fichier tar et gzip [54]. L'interprète est de 150.000 lignes de code C et compilé en un exécutable de 1 Mo sur les architectures typiques de la machine. Alternativement, l'interprète peut être compilé pour une bibliothèque de liens et intégré dans d'autres programmes. Il ya près de 500 modules dans la distribution, comprenant 200.000 lignes de Perl et un montant supplémentaire 350.000 lignes de code C. (Une grande partie du code C dans les modules se compose de tables de codage de caractères.)

L'interpréteur a une architecture orientée objet. Tous les éléments du langage Perl-scalaires, les tableaux, tables de hachage, coderefs, handles de fichiers, sont représentés dans l'interpréteur de struct C. Les opérations sur ces structures sont définies par une grande collection de macros, typedefs et des fonctions; ceux-ci constituent l'API C de Perl. L'API Perl peut être déroutant 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.

La vie d'un interpréteur Perl divise grosso modo en une phase de compilation et d'une phase de l'exécution. [55] En Perl, les phases sont les grandes étapes du cycle de vie de l'interprète. Chaque interprète passe par chaque phase qu'une seule fois, et les phases suivre dans un ordre fixe.

La plupart de ce qui se passe dans la phase de compilation de Perl est la compilation, et la plupart de ce qui se passe dans la phase d'exploitation de Perl est l'exécution, mais il ya des exceptions importantes. Perl fait un usage important de sa capacité à exécuter du code Perl durant la phase de compilation. Perl sera également retarder la compilation dans la phase de l'exécution. Les termes qui indiquent le type de traitement qui se passe réellement à tout moment sont de la compilation et de l'exécution. Perl est en moment de la compilation à plus de points lors de la phase de la compilation, mais lors de la compilation peut également être entré lors de la phase de l'exécution. Le moment de la compilation du code à un argument de chaîne transmis au haut-eval se produit au cours de la phase d'exécution. Perl est souvent en temps exécuter durant la phase de compilation et passe la majeure partie de la phase d'exécution en temps d'exécution. Code dans des blocs BEGIN s'exécute au moment de l'exécution, mais dans la phase de compilation.

Lors de la compilation, l'interprète analyse du code Perl dans un arbre de syntaxe. Au moment de l'exécution, il exécute le programme en marche l'arbre. Le texte est analysé qu'une seule fois, et l'arbre de syntaxe est soumise à l'optimisation avant son exécution, ainsi que l'exécution est relativement efficace. Optimisations compilation sur l'arbre de syntaxe comprennent pliage constante et la propagation de contexte, mais l'optimisation des judas sont également effectuées.

Perl a une grammaire Turing-complet parce que l'analyse peut être affectée par code d'exécution exécuté durant la phase de compilation. [56] Par conséquent, Perl ne peut pas être analysé par un analyseur lexical / analyseur combinaison de Lex / Yacc droite. Au lieu de cela, l'interprète met en œuvre sa propre analyseur syntaxique, qui coordonne avec un GNU bison parser modifié pour résoudre les ambiguïtés de la langue.

On dit souvent que «seul perl peut analyser Perl" [57], ce qui signifie que seul l'interpréteur Perl (Perl) peut analyser le langage Perl (Perl), mais même cela n'est pas, en général, c'est vrai. Parce que l'interpréteur Perl peut simuler une machine de Turing durant la phase de compilation, il devra décider le problème de l'arrêt afin de compléter l'analyse dans chaque cas. C'est un résultat de longue date que le problème de l'arrêt est indécidable, et donc même pas perl peut toujours analyser Perl. Perl fait le choix inhabituel de donner l'utilisateur l'accès à sa pleine puissance de programmation dans sa propre phase de compilation. Le coût en termes de pureté théorique est élevé, mais inconvénient pratique semble être rare.

D'autres programmes qui s'engagent à analyser Perl, comme des analyseurs de code source et auto-pénétrateurs, doivent composer non seulement avec des constructions syntaxiques ambiguës, mais aussi avec l'indécidabilité de l'analyse Perl dans le cas général. Le projet IPP de Adam Kennedy porté sur l'analyse du code Perl comme un document (en conservant son intégrité en tant que document), au lieu d'analyser Perl comme des codes exécutables (qui n'est même pas Perl lui-même peut toujours faire). C'était Kennedy qui le premier a conjecturé que "l'analyse Perl souffre du« problème de l'arrêt », [58] qui a prouvé plus tard [59].

Perl est distribué avec des tests fonctionnels 120.000. Celles-ci passent dans le cadre du processus de construction normale et largement exercer ses modules de base et interprète. Les développeurs Perl s'appuient sur les tests fonctionnels afin d'assurer que les changements à l'interprète ne pas introduire de bugs logiciels, en outre, les utilisateurs de Perl qui voient que l'interprète passe ses tests fonctionnels sur leur système peuvent avoir un degré élevé de confiance que cela fonctionne correctement.

Maintenance de l'interpréteur Perl est devenu de plus en plus difficile au fil des ans. Le code de base a connu un développement continu depuis 1994. Le code a été optimisé pour les performances au détriment de la simplicité, de clarté et de fortes interfaces internes. De nouvelles fonctionnalités ont été ajoutées, mais la rétrocompatibilité quasi totale avec les versions antérieures est maintenue. Les rejets de Perl ont été coordonnés par pumpkings Perl [60], qui assurait l'intégration des soumissions de patchs et correctifs de bugs, mais la langue a depuis changé d', un cycle de publication mensuelle tournante. discussion sur le développement s'effectue via la liste de diffusion des perl5_porters. Comme de Perl 5.11, les efforts de développement ont inclus refactoring certains modules de base appelés modules «double lifed 'sur le noyau Perl [61] pour aider à atténuer certains de ces problèmes.
Disponibilité

Perl est double licence en vertu de la licence artistique et de la Licence Générale de GNU Public License. Les distributions sont disponibles pour la plupart des systèmes d'exploitation. Elle est particulièrement répandue sur les systèmes Unix-like, mais il a été porté à la plus moderne (et bien obsolète) plates-formes. Avec seulement six exceptions signalées, Perl peut être compilé à partir du code source sur tous POSIX, ou plates-formes autrement-compatibles Unix [62].

En raison des changements inhabituels indispensables à l'environnement Mac OS Classic, un port spécial appelé MacPerl a été expédié de façon indépendante. [63]

Le Comprehensive Perl Archive Network exerce une liste complète des plateformes prises en charge avec des liens vers les distributions disponibles sur chacun d'eux. [64] CPAN est aussi la source pour les modules Perl accessibles au public qui ne font pas partie de la distribution Perl.
Fenêtres

Les utilisateurs de Microsoft Windows installent généralement l'une des distributions binaires natifs de Perl pour Win32, le plus souvent Strawberry Perl ou ActivePerl. Compilation Perl à partir du code source sous Windows est possible, mais la plupart des installations n'ont pas le compilateur C nécessaires et les outils de construction. Cela rend également plus difficile à installer les modules du CPAN, en particulier ceux qui sont en partie écrits en C.

ActivePerl est une distribution du code source fermé d'ActiveState qui a communiqués réguliers qui suivent les principales versions de Perl. [65] La distribution comprend également le gestionnaire de paquets Perl (PPM) [66], un outil populaire pour l'installation, la suppression, la modernisation et la gestion de l' utiliser des modules Perl communs.

Strawberry Perl est une distribution open source pour Windows. Il a eu, communiqués trimestriels réguliers depuis Janvier 2008, y compris de nouveaux modules tels que des commentaires et demandes entrent en jeu. Strawberry Perl a pour objectif d'être en mesure d'installer des modules tels que les distributions standard de perl sur d'autres plates-formes, y compris la compilation des modules XS.

La couche d'émulation Cygwin est une autre façon de courir Perl sous Windows. Cygwin fournit un environnement Unix comme sur Windows, et les deux Perl CPAN et sont disponibles sous forme de paquets pré-compilés standard dans le programme d'installation de Cygwin. Parce que Cygwin comprend également le gcc, la compilation Perl à partir des sources est également possible.
interfaces de base de données

Perl est largement favorisée pour les applications de base de données. Ses installations de manipulation de texte sont utiles pour générer des requêtes SQL, des tableaux, des tables de hachage, et la gestion automatique de la mémoire, il est facile de recueillir et de traiter les données retournées. Par exemple, dans l'interface (API) de Tim Bunce Perl DBI de programmation d'application, les arguments de l'API peut être le texte de requêtes SQL, il est donc possible de programmer en plusieurs langues en même temps (par exemple, pour générer une page Web à l'aide HTML, JavaScript et SQL dans un document en ligne). L'utilisation de Perl interpolation variable pour personnaliser programmation de chacune des requêtes SQL, et la spécification des tableaux ou hachages Perl que les structures de tenir programme les données qui en résultent fixe de chaque requête SQL, permet à un mécanisme de haut niveau pour la manipulation de grandes quantités de données pour le post-traitement par un sous-programme Perl. [67] Dans les premières versions de Perl, interfaces de base de données ont été créés par re-lier l'interprète avec une bibliothèque de base de données côté client. Ce fut assez difficile que cela a été fait pour que quelques-uns des bases de données les plus importantes et les plus largement utilisés, et il restreint l'exécutable perl résultant de l'utilisation juste une interface de base de données à la fois.

En Perl 5, interfaces de bases de données sont mises en œuvre par les modules DBI de Perl. Le module DBI (Database Interface) présente une interface unique, base de données indépendante pour applications Perl, tandis que les modules DBD (Database Driver) gèrent les détails de l'accès aux quelque 50 bases de données différentes, il ya des pilotes pour la plupart des bases de données DBD ANSI SQL.

DBI fournit cache pour les poignées de bases de données et des requêtes, ce qui peut grandement améliorer les performances dans des environnements d'exécution à long terme tels que mod_perl, [68] d'aider les systèmes à haut volume à éviter les pics de charge que l'effet Slashdot.

Dans les applications Perl modernes, en particulier ceux écrits en utilisant des cadres d'application Web comme catalyseur, le module DBI est souvent utilisé indirectement via mappers objet-relationnel comme DBIx :: Class, Class :: DBI ou Rose :: DB :: Object qui génèrent SQL les requêtes et les données de la poignée de manière transparente à l'auteur de la demande.
Performance comparative

Le Langage informatique Benchmarks jeu, un projet organisé par Alioth, compare les performances des implémentations de problèmes de programmation typiques dans plusieurs langages de programmation. [69] Les implémentations Perl soumis effectuent généralement vers le haut de gamme du spectre mémoire-usage et donnent des résultats de vitesse variées . La performance de Perl dans le jeu de benchmarks est typique pour les langages interprétés. [70]

De vastes programmes Perl commencer plus lentement que des programmes similaires dans les langages compilés parce que perl doit compiler la source chaque fois qu'il s'exécute. Dans un discours à la conférence YAPC :: Europe 2005 et de l'article suivant «Un départ en temps opportun», Jean-Louis Leroy a constaté que ses programmes Perl ont pris beaucoup plus de temps que prévu, car il l'interpréteur perl a passé beaucoup de temps à trouver la cause de modules sa plus-large chemin d'inclusion [71]. Contrairement à Java, Python et Ruby, Perl n'a que le support expérimental de pré-compilation. [72] Par conséquent programmes Perl payer cette pénalité tête à chaque exécution. La phase d'exécution des programmes typiques est assez long que le temps de démarrage amorti n'est pas substantielle, mais des repères qui permettent de mesurer les temps d'exécution très courts sont susceptibles d'être faussé en raison de cette surcharge.

Un certain nombre d'outils ont été mis en place pour améliorer cette situation. Le premier outil est mod_perl d'Apache, qui a tenté de résoudre l'une des raisons les plus communes que les petits-programmes Perl ont été invoquées rapidement: le développement Web CGI. ActivePerl, via Microsoft ISAPI, offre des performances similaires.

Une fois le code Perl est compilé, il ya 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 comme C ou C + +. Des exemples de tels frais généraux incluent l'interprétation de bytecode, gestion de la mémoire de comptage de références et de vérification de type dynamique.
Optimisation

Comme tout code, les programmes Perl peuvent être accordés pour des performances en utilisant des repères et des profils après une mise en œuvre lisible et correct est terminée. En partie à cause de la nature interprétée de Perl, écrit plus efficace Perl ne sera pas toujours suffisant pour atteindre les objectifs de rendement de un pour un programme.

Dans de telles situations, les routines les plus critiques d'un programme Perl peuvent être écrites dans d'autres langages tels que C ou de l'Assemblée, qui peut être connecté à Perl via des modules Inline simples ou le mécanisme de XS plus complexe, mais flexible. [73] Nicholas Clark, un développeur du noyau Perl, traite de certains compromis de conception et de solutions Perl dans un document de 2002 intitulé «Quand perl n'est pas assez rapide". [74]
Perl 6
Article détaillé: Perl 6
Camelia, le logo pour le projet Perl 6. [75]

À la Conférence de 2000 Perl, Jon Orwant a plaidé pour une initiative de grande langue nouvelle. [76] Cela a conduit à la décision de commencer à travailler sur une refonte de la langue, d'être appelé Perl 6. Les propositions de nouvelles fonctionnalités de langage ont été sollicitées auprès de la communauté Perl au sens large, qui a présenté plus de 300 RFC.

Mur a passé les prochaines années 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ées pour correspondre aux chapitres de programmation Perl. En Janvier 2011, la spécification développement de Perl 6 est encapsulé dans les documents de conception appelés synopsis - numérotée pour correspondre à Apocalypses [77].

Perl 6 ne vise pas à être rétrocompatible, mais il y aura un mode de compatibilité. Perl 6 et Perl 5 sont des langues distinctes avec un ancêtre commun. [78]

travail de thèse par Bradley M. Kuhn, supervisé par mur, considéré comme l'utilisation possible de la machine virtuelle Java comme un runtime pour Perl. [79] La thèse de Kuhn a montré que cette approche est problématique. En 2001, il a été décidé que Perl 6 serait exécuté sur une machine virtuel multi-langage appelé Parrot. Cela signifie que d'autres langues ciblant le Parrot auront accès natif à CPAN, ce qui permet un certain niveau de développement multi-langue.

En 2005, Audrey Tang a créé le projet carlins, une implémentation de Perl 6 en Haskell. Cela a agi comme, et continue d'agir comme une plate-forme de test pour le langage Perl 6 (distinct de l'évolution de la mise en œuvre effective) - permettant aux concepteurs de langage à explorer. Le projet carlins a engendré une communauté inter-langue active Perl / Haskell centrée autour de la freenode # perl6 du canal IRC.

À partir de 2012 un certain nombre de fonctionnalités dans les Perl 6 langues présentent des similarités avec Haskell. [Citation nécessaire]

À partir de 2012 Perl 6 centres de développement principalement autour de deux compilateurs: [80]

    Rakudo Perl 6, une mise en œuvre en cours d'exécution de la machine virtuelle Parrot, avec les efforts de développement pour cibler également la machine virtuelle Java. [81]
    Niecza, qui cible le Common Language Runtime

Avenir de Perl 5

Développement de Perl 5 se poursuit également. Perl 5.12.0 est sorti en Avril 2010 avec quelques nouvelles fonctionnalités influencés par la conception de Perl 6. [29] [82] Perl 5.14.1 est sorti le 17 Juin 2011, et Perl 5.16.1 est sorti le 9 Août, 2012. [83] Perl 5.18.0 est sorti le 18 mai 2013. Perl 5 versions de développement sont libérés sur une base mensuelle, avec les versions majeures sortent une fois par an. [84]

Les plans futurs pour Perl 5 notamment de rendre plus facile le langage de base pour s'étendre de modules, et en fournissant un petit protocole de méta-objet, extensible dans le noyau [85].

La proportion relative des recherches pour 'Perl programmation », par rapport aux recherches similaires pour d'autres langages de programmation, diminué de façon constante de 2005 à début 2011 (avec une stabilisation depuis lors). [86] Toutefois, selon cette même source, Perl a été l'un des dix premiers langages de programmation les plus populaires depuis le début des relevés en 2001. [87]
Communauté Perl

La culture et la communauté Perl a développé parallèlement à la langue elle-même. Usenet a été le premier lieu public où Perl a été introduite, mais au cours de son évolution, la communauté Perl a été marquée par la croissance de l'élargissement des services basés sur Internet, y compris l'introduction de la World Wide Web. La communauté qui entoure Perl était, en fait, le sujet du premier "Etat de l'oignon" de Wall parler. [88]
Etat de l'oignon

Etat de l'oignon est le nom de chaque année résumés keynote de style de mur sur les progrès de Perl et de sa communauté. Ils sont caractérisés par son humour caractéristique, employant des références à la culture de Perl, la culture des hackers large, les antécédents linguistiques du mur, parfois sa vie de famille, et parfois même son origine chrétienne [89].

Chaque discours est d'abord donnée à diverses conférences Perl et est finalement aussi publié en ligne.
Passe-temps Perl

JAPHs
    Dans email, Usenet, et l'affichage de panneau de message, les programmes "Juste un autre hacker Perl» (JAPH) sont une tendance commune, originaire de Randal L. Schwartz, l'un des premiers formateurs Perl professionnels. [90] Dans le langage de la culture Perl, Les programmeurs Perl sont connus comme les pirates Perl, et à partir de là découle la pratique de l'écriture de programmes courts pour imprimer la phrase "Juste un autre hacker Perl». Dans l'esprit du concept original, ces programmes sont modérément masquée et assez court pour s'adapter à la signature d'un email ou un message Usenet. Le JAPH "canonique" telle que développée par Schwartz comprend la virgule à la fin, même si cela est souvent omis. [91]
Perl Golf
    Perl "golf" est le passe-temps de réduire le nombre de caractères (clé "coups") utilisé dans un programme Perl au strict minimum, tout comme la façon dont les joueurs de golf cherchent à prendre le moins de coups possible dans un round. La première utilisation de l'expression [92] a souligné la différence entre le code des piétons destiné à enseigner un nouveau venu et hacks laconiques susceptibles d'amuser les programmeurs Perl expérimentés, un exemple de ce dernier étant JAPHs qui ont déjà été utilisés dans les signatures de newsgroups et ailleurs. Cascades similaires avaient été un passe-temps sans nom dans l'APL de la langue dans les décennies précédentes. L'utilisation de Perl pour écrire un programme qui a effectué le cryptage RSA a suscité un large intérêt et pratique dans ce passe-temps. [93] Dans les années suivantes, le terme «terrain de code" a été appliquée à ce passe-temps dans d'autres langues. [94] Un Perl Golf Apocalypse a eu lieu à Perl Conference 4.0 à Monterey, en Californie, en Juillet 2000.
Obfuscation
    Comme C, concours de code déguisées étaient un passe-temps bien connu à la fin des années 1990. Le Obfuscated Perl Contest est un concours organisé par The Perl Journal 1996-2000 qui a fait une vertu arc de flexibilité syntaxique de Perl. Prix ​​ont été décernés pour des catégories telles que-programmes "plus puissants" qui ont fait une utilisation efficace de l'espace et «meilleur signature de quatre lignes» pour les programmes qui s'inscrivent dans quatre lignes de 76 caractères dans le style d'un bloc de signature Usenet. [95]
Poésie
    Perl poésie est la pratique d'écrire des poèmes qui peuvent être compilés en code Perl juridique, par exemple la pièce appelée Black Perl. Ce passe-temps est rendu possible par le grand nombre de mots anglais qui sont utilisés dans le Perl. Nouveaux poèmes sont régulièrement soumis à la communauté PerlMonks. [96]

Perl sur IRC

Il ya un certain nombre de canaux IRC qui offrent un soutien pour la langue et quelques modules.
Réseau IRC Channels
irc.freenode.net # perl # # perl6 cbstream # # perlcafe poe
irc.perl.org # # orignal poe # # catalyseur dbix classe # perl-help # # distzilla epo # # corehackers sdl # win32 # # toolchain padre
irc.slashnet.org # PerlMonks
irc.oftc.net # perl
irc.efnet.net # perlhelp
irc.rizon.net # perl
irc.debian.org # debian-perl
CPAN Acme

Il existe aussi de nombreux exemples de code écrites purement pour le divertissement sur le CPAN. Lingua :: Romana :: Perligata, par exemple, permet l'écriture de programmes en latin. [97] Lors de l'exécution d'un tel programme, le module convertit le code source en Perl régulière et l'exécute.

La communauté Perl a mis de côté l'espace de noms "Acme" pour les modules qui sont agréables dans la nature (mais sa portée s'est élargie pour inclure du code exploratoire ou expérimentale ou tout autre module qui n'est pas censé jamais être utilisé en production). Certains des modules Acme sont délibérément mis en œuvre de façon amusante. Cela inclut Acme :: Bleach, l'un des premiers modules de l'Acme :: namespace [98], qui permet le code source du programme pour être "blanchi" (ie, tous les caractères remplacés par des espaces) et encore travailler encore.
Exemple de code

Dans les anciennes versions de Perl, on peut écrire le programme Bonjour tout le monde comme:

    print "Bonjour tout le monde \ n";

Dans les versions ultérieures, qui soutiennent la déclaration de mot, on peut aussi l'écrire comme:

    utiliser 5.010;
    dire "Bonjour tout le monde!";

Bonnes pratiques Perl ont besoin de programmes plus complexes à ajouter l'utilisation stricte et utilisent avertissements; pragma, menant à quelque chose comme:

    use strict;
    utiliser avertissements;

    print "Bonjour tout le monde \ n";

Voici un programme Perl plus complexe, qui décompte les secondes jusqu'à un seuil donné:

 #! / Usr / bin / perl
 use strict;
 utiliser avertissements;
 use IO :: Handle;

 my ($ restants, $ total);

 $ Restants = $ Total = shift (@ ARGV);

 STDOUT-> autoflush (1);

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

 print "\ n";

L'interpréteur Perl peut aussi être utilisé pour un large scripts sur la ligne de commande. L'exemple suivant que invoquée depuis un shell sh-compatible comme Bash traduit la chaîne "Bob" dans tous les fichiers se terminant par txt dans le répertoire courant de "Robert".:

     $ Perl-i.bak-lp-e 's / Bob / Robert / g' *. Txt

Critique

Perl a été dénommé «le bruit de ligne 'par certains programmeurs qui prétendent sa syntaxe, il est un langage en écriture seule. Le premier une telle mention était dans la première édition de l'ouvrage Apprendre Perl, un livre Perl 5 didacticiel écrit par Randal L. Schwartz [99], dans le premier chapitre de laquelle il déclare: «Oui, parfois Perl ressemble à un bruit de ligne pour les non-initiés , mais pour le programmeur Perl chevronné, il ressemble à un bruit de ligne somme de contrôle d'une mission dans la vie. "[100] Il a également déclaré que l'accusation que Perl est un langage d'écriture ne peut être évitée par un codage avec" des soins appropriés ". [ 100] Le Perl aperçu documents perlintro stipule que les noms de variables intégrées scalaires "magiques" "ressemblent à des signes de ponctuation ou le bruit de ligne". [101] Le document indique perlstyle que le bruit de la ligne dans les expressions régulières pourraient être atténués en utilisant le modificateur / x pour ajouter un espace. [102]

Selon le Perl 6 FAQ, Perl 6 a été conçu pour atténuer les «suspects habituels» qui suscitent le «bruit ligne« revendication de Perl 5 critiques, y compris la suppression de la «la majorité des variables de ponctuation» et la désinfection de l'expression rationnelle syntaxe. [103] Le Perl 6 FAQ indique également que le ce qui est parfois désigné comme le bruit de la ligne de Perl est "la syntaxe réelle de la langue», tout comme le gérondif et les prépositions sont une partie de la langue anglaise. [103] Dans un Décembre 2012 blogue, chromatique déclaré que la conception de Perl 6 est une «grammaire bien défini" qui atténue le problème de bruit sur la ligne via un système «amélioré de type, un système orienté objet unifié avec un métamodèle intelligent, metaoperators, et un système plus clair de contexte qui prévoit raffinements tels que la paresse généralisée ". [104] Il a également déclaré que« Perl 6 a une cohérence et une consistance que Perl 5 manque. "
Published By Drupal french Study