Perl (langage)
2332
31200545
2008-07-01T15:07:38Z
TXiKiBoT
195090
robot Ajoute: [[sh:Perl]]
{{voir homonymes|Perl}}
{{Infobox Langage de programmation
| nom = Perl
| logo =
| paradigmes = [[Programmation orientée objet|Objet]], [[Programmation impérative|impératif]], [[Programmation fonctionnelle|fonctionnel]]
| année = [[1987]]
| auteur = [[Larry Wall]]
| développeurs = [[The Perl Foundation]]
| dernière version = 5.10 ({{Date|18|décembre|2007|en informatique}})
| typage = [[Typage faible|Faible]], [[Typage dynamique|dynamique]]
| implémentations = [[Perl]]
| dialectes =
| influencé par = [[C (langage)|C]], [[BASIC]], [[shell (informatique)|shell]], [[sed (logiciel)|sed]], [[awk]]
| a influencé = [[Ruby]], [[Python (langage)|Python]], [[PHP: Hypertext Preprocessor|PHP]], [[Perl 6]]
| système d'exploitation = [[Multi-plate-forme]]
| licences = [[Licence publique générale GNU|GPL]], [[Artistic License]]
| site web = [http://www.perl.org www.perl.org]
}}
'''Perl''' est un [[langage de programmation]] créé par [[Larry Wall]] en [[1987]] et reprenant des fonctionnalités du [[langage C]] et des langages de scripts [[sed (informatique)|sed]], [[awk]] et shell ([[Bourne shell|sh]]).
Larry Wall donne deux interprétations de l'acronyme "PERL":
* ''Practical Extraction and Report Language'' ou ''langage pratique d'extraction et de génération de rapports''
* ''Pathetically Eclectic Rubbish Lister'' ou ''collectionneur de déchets pathétiquement éclectiques''
Ces noms sont des [[rétro-acronyme]]s.
L'association en charge du développement et de la promotion de Perl est
[[The Perl Foundation]]. En France, les [[Mongueurs de Perl]] promeuvent ce
langage, notamment via les [[Journées Perl]].
== Origines et [[Mise en œuvre|mises en œuvre]] ==
=== Le nom ===
Initialement, le concepteur de Perl, Larry Wall, avait prévu de nommer son langage « pearl », d'aprés une parabole biblique se trouvant relatée dans l'[[Évangile selon Matthieu|évangile]] selon Saint-Matthieu (chapitre 13, versets 45 et 46). Malheureusement pour Wall, il existait déjà un langage de programmation dénommé PEARL -- pour la programmation multitache et temps réel. Finalement, Wall changea simplement l'orthographe pour arriver à « Perl ». Les significations diverses que l'on trouve de nos jours comme par exemple le ''Practical Extraction and Report Language'' sont simplement des rétro-acronymes : des acronymes forgés a posteriori.
=== Le but===
<!-- Cette image n'est pas libre -->
Perl est né du besoin de disposer d'un langage optimisé pour l'extraction d'informations de [[fichier texte|fichiers textes]] et la génération de rapports. Avant la naissance de Perl, les traitements sur le texte devaient être faits au moyen de scripts [[Shell (informatique)|shell]], en utilisant les programmes [[sed]], [[awk]], [[grep]], [[cut (commande UNIX)|cut]], [[test (unix)|test]] et [[expr]]. Beaucoup de limites apparaissaient quand on utilisait cette programmation : format des données d'entrée pas toujours souple, difficulté de passer des données d'un [[processus (informatique)|processus]] à l'autre, lenteur due au lancement de multiples programmes (le coût du lancement d'un processus n'était pas négligeable), dépendance à une mise en œuvre particulière d'une commande, [[bogue (informatique)|bogues]] intrinsèques à certains langages (awk ne différencie pas la comparaison de nombres et de chaînes de caractères). Perl regroupe et emprunte sa [[syntaxe concrète]] à tous ces mini langages, dont le shell, en ajoutant une partie de la syntaxe du C et les fonctions des bibliothèques système en C.
Voici quelques-unes des devises qui lui sont couramment associées :{{Référence nécessaire}}
* ''There Is More Than One Way To Do It'' (''TIMTOWTDI'') qui pourrait se traduire par ''Il y a plus d'une façon de le faire'' : Perl propose tellement de bibliothèques et de fonctions que le programmeur trouvera souvent 3 ou 4 manières de réaliser une même opération.
* ''Perl : la tronçonneuse suisse des langages de programmation'' pour les même raisons.
* ''Perl : l'assistant idéal des administrateurs de système'', la majorité des fichiers de configuration étant en texte sous Unix.
Sa souplesse autorise l'emploi de plusieurs modèles de programmation : [[programmation procédurale|procédurale]], [[programmation fonctionnelle|fonctionnelle]] et [[programmation orientée objet|orientée objet]].
===Les moyens===
Perl vise la commodité pour le programmeur (existence de raccourcis qui le font qualifier de langage « diagonal ») plutôt qu'un souhait esthétique d'architecture stricte (langages « orthogonaux »). Perl est un [[langage de script]], très complet et [[Multiplate-forme|multiplate-forme]], et a été qualifié de « ciment assurant la cohésion du web », étant le langage le plus populaire pour l'écriture de script [[Common Gateway Interface|CGI]].
Perl est également capable d'exécuter des scripts 'in-process' dans un serveur web apache, grâce à l'extension [http://perl.apache.org/ mod_perl ]. Cette solution offre des performances équivalente à celles de PHP, voire de servlets Java.
Perl a un statut de [[logiciel libre]], distribué sous [[double licence]] : [[licence artistique|artistique]] et [[GNU General Public License|GPL]].
Perl est porté sur la plupart des [[système d'exploitation|systèmes d'exploitation]] mais excelle particulièrement en environnement [[POSIX]] ([[Linux]], [[Mac OS X]], [[Cygwin]] sous [[Microsoft Windows]] etc.) ; il devient populaire aussi sous [[Microsoft Windows]] (hors [[Cygwin]]) grâce à la facilité d'installation de la distribution gratuite ''ActivePerl'' (dont la version 5.8 permet l'usage de l'[[Unicode]] ou de l'interface graphique) et d'environnements de développement gratuits comme ''[[SciTE]]'' ou [http://e-p-i-c.sourceforge.net epic] pour eclipse, ou commerciaux comme [http://www.activestate.com/Products/Komodo/ Komodo].
Depuis 2008, une troisième distribution de perl pour windows existe: strawberry <ref>[http://strawberryperl.com/ Strawberry Perl<!-- Titre généré automatiquement -->]</ref>, elle a pour but d'être plus proche de la distribution unix originale, avec un [[compilateur C]].
=== Syntaxe et sémantique ===
Perl est un [[programmation impérative|langage impératif]] dont la syntaxe est dérivée du langage C et des [[Shell (informatique)|shell]]s UNIX. Comme en shell, le [[caractère (informatique)|caractère]] croisillon (#) introduit un [[commentaire (informatique)|commentaire]].
La [[syntaxe]] de Perl est riche ce qui permet d'exprimer de manière concise des expressions qui, dans d'autres langages, nécessiteraient l'usage d'appel à des fonctions de [[bibliothèque logicielle|bibliothèques]] . Mais on peut se restreindre initialement à un sous-ensemble du langage.
On décrit Perl généralement comme un langage [[typage dynamique|typé dynamiquement]]. Cette caractérisation est incomplète car Perl est aussi [[typage statique|typé statiquement]] mais comporte peu de types. En effet le premier caractère des [[identificateur]]s de variable est un caractère non [[alphanumérique]] appelé [[sigil (informatique)|sigil]]. Comme pour les shells Unix, le sigil dollar ($) dénote une variable [[scalaire]], le sigil [[@|arobase]] (@) désigne une variable [[tableau (structure de données)|tableau]] et le sigil pourcent (%) un [[tableau associatif]], aussi appelé ''hashage'' ou ''hash''.
Les tableaux peuvent être utilisés comme des [[pile (informatique)|pile]]s ou des [[file]]s.
Perl supporte des déclarateurs qui désignent la [[Portée (informatique)|portée]] des [[variable]]s
déclarées :
<source lang="perl">
my $s = 'toto' ; # variable scalaire à portée lexicale
local $level += 1; # variable scalaire avec une valeur à portée dynamique
our @s = (1, $s, 3.14); # variable tableau globale au module courant
</source>
Les sigils permettent de reconnaître les noms de variables dans des chaînes
de caractères et d'interpréter ces variables.
<source lang="perl">
print "la variable toto vaut $toto";
</source>
Perl permet de construire facilement des structures complexes et composites.
Là encore, beaucoup d'autres langages imposeraient l'appel explicite
de [[constructeur (programmation informatique)|constructeurs]]
d'[[instance (programmation)|instance]]s.
<source lang="perl">
my %a = ( clef1 => [1, 2], clef2 => [ 3, 4] );
</source>
Le module [http://search.cpan.org/dist/XML-Literal/ XML::Literal] disponible sur le CPAN permet de supporter des littéraux de type [[Extensible Markup Language|XML]] de manière similaire à l'extension normalisée [[E4X]] d'[[ECMAScript]].
Le langage Perl est en constante évolution mais avec un soin tout particulier au maintien de la [[compatibilité descendante]].
===La version 5.10 ===
La dernière version majeure de Perl, la 5.10, inclut des fonctionnalités inspirées par le futur Perl 6 comme une structure de contrôle <tt>switch</tt> beaucoup plus puissante que celle de C, et les captures
nommées pour l'opérateur <tt>match</tt>.
L'effort de conception de Perl 6 débouche donc déjà sur une vigueur
renouvelée de Perl 5.
===L'avenir à moyen terme ===
[[Perl 6]] est en cours de développement. Il tournera dans la [[machine virtuelle]] [[Parrot (machine virtuelle)|Parrot]].
Le développement de Parrot a atteint une étape critique au début de l'été 2006
avec la mise en œuvre du système de règles Perl 6 ce qui permet de s'affranchir d'outils externes comme [[yacc]] ou [[lex]].
En parallèle, [[Audrey Tang]], aidée d'un petit groupe, développe un [[interpréteur]] Perl 6 en [[Haskell]] nommé [[Pugs]]. Cette mise en œuvre permet de valider et d'affiner les [[spécification (informatique)|spécification]]s et d'écrire et faire tourner des jeux de [[test (informatique)|test]]s.
De nombreuses fonctionnalités mises en œuvre par des bibliothèques en Perl 5 seront disponibles nativement en Perl 6. Ainsi l'[[analyse syntaxique]] sera intégrée dans le moteur d'expressions rationnelles. Aujourd'hui un analyseur [[LALR]] peut s'écrire par le module [http://search.cpan.org/dist/Parse-Yapp/ Parse::Yapp], clone de [[yacc]]. [http://search.cpan.org/dist/Parse-RecDescent/ Parse::RecDescent] est un module qui permet l'écriture d'un analyseur récursif descendant.
===L'intégration dans l'existant===
Les programmes Perl sont intégralement portables entre [[GNU/Linux]], [[Mac OS X]] (ou autre [[UNIX]]) et [[Windows]] malgré les désignations de fichiers différentes de ces systèmes (Perl remplace tout seul si besoin est les « / » par des « \ »). Un exemple du champ d'action de Perl est son utilisation comme script [[Common Gateway Interface|CGI]] pour faire tourner [[Wikipedia]] jusqu'en [[janvier 2002]]. Il constitue en effet un bon langage de [[prototypage]].
Perl permet l'usage du moteur d'interface graphiques [[Tk (informatique)|Tk]] pour effectuer des entrées-sorties conformes à l'état de l'art. On désigne parfois l'ensemble sous le nom générique ''Perl/Tk''. L'extension Tk est intégrée à ActivePerl depuis la version 5.8 du langage.
Des interfaces graphiques autre que le vieillissant Tk sont supportés par
des bibliothèque de CPAN.
TkZinc [http://search.cpan.org/~zincdev/tk-zinc/] apporte un look rajeuni de Tk.
PerlQt [http://search.cpan.org/~ggarand/PerlQt/]supporte [[Qt]] 3.x.
Gtk2 [http://search.cpan.org/~tsch/Gtk2/] supporte [[GIMP Toolkit|Gtk]] 2.x.
wxperl [http://search.cpan.org/~mbarbon/Wx] supporte [[wxWidgets]].
wxWidgets a l'avantage de fournir le look natif du [[système de fenêtrage]] utilisé.
Sous [[Mac OS X]], CamelBones [http://camelbones.sourceforge.net/] donne accès à l'API de [[Cocoa (Apple)|Cocoa]].
=== Les ressources ===
Plus de 15 millions de lignes de modules Perl d'utilisation libre, allant des mathématiques avancées aux connexions aux [[base de données|bases de données]], en passant par les réseaux, la simulation d'un [[calculateur quantique]] et bien davantage, peuvent être téléchargées depuis un réseau de sites appelé [[CPAN]] : ''Comprehensive Perl Archive Network''.
* http://www.cpan.org/
===Le mécanisme===
Perl5 est un langage dont la nature hautement dynamique rend assez floue la distinction entre les phases de [[compilateur|compilation]] et d'exécution. De plus, la phase de compilation ne génère pas un [[bytecode]] comme c'est le cas de beaucoup d'autres langages interprétés, mais un arbre syntaxique (AST, ''Abstract Syntax Tree'').
En pratique, Perl commence par traduire le [[code source]], instruction par instruction, en AST, qui est par la suite optimisé. Si des instructions sont situées dans un bloc spécial comme <tt>BEGIN</tt> ou <tt>CHECK</tt>, elles sont exécutées dès leur compilation (et donc avant que le reste du code source soit compilé). C'est le cas en particulier des modules chargés par l'instruction <tt>use</tt>. L'AST en lui-même est un peu plus élaboré qu'un AST usuel car il contient déjà les chemins d'exécution. Lors de la phase d'exécution, l'interpréteur suit donc les chemins présents dans l'AST et exécute les instructions restantes.
Pour plus de détails sur ces blocs et leur ordre exact d'exécution, consulter [http://perldoc.perl.org/perlmod.html#BEGIN%2c-CHECK%2c-INIT-and-END-BEGIN-CHECK-INIT-END la section ''BEGIN, CHECK, INIT and END''] de [http://perldoc.perl.org/perlmod.html perlmod].
Contrairement à ce que certains peuvent croire, Perl5 n'utilise donc à aucun moment de bytecode. Le projet de compilation en bytecode commencé lors de Perl 5.005 par Malcom Beattie n'a jamais totalement abouti, n'a jamais été vraiment fonctionnel, et sera donc probablement retiré de Perl 5.10. Ce n'est toutefois pas une grande perte car l'arrivée de [[Parrot (machine virtuelle)|Parrot]] offre une solution qui, si elle n'est pas encore fonctionnelle, sera clairement plus stable et plus pérenne.
<!-- stefp: Pas d'accord!
[[Perl 6]] fonctionnera sur un principe totalement différent de Perl 5, et sera plus proche du fonctionnement habituel des langages interprétés, avec des phases de compilation et d'exécution plus claires et bien séparées.
-->
La compilation de Perl6 passe par le moteur de règles (l'équivalent plus avancé des [[expressions rationnelles]] actuelles), qui produit un AST classique. Celui-ci est ensuite transcrit dans un autre langage, par défaut le bytecode Parrot. Le compilateur expérimental [[Pugs]] permet de transcrire l'AST dans des langages aussi variés que Perl 5, Parrot, [[JavaScript]], [[Haskell]]. Dans le cas du bytecode Parrot, celui-ci est exécuté par la [[machine virtuelle]] du même nom, qui dispose de plusieurs modes de fonctionnement internes, dont un système de [[compilation à la volée]] pour offrir les performances maximales sur chaque architecture hôte.
==Exemples de code ==
Certaines personnes affirment avec [[humour]] que Perl veut dire 'Pathologically Eclectic Rubbish Lister' (''collectionneur pathologique de déchets variés'') à cause de l'utilisation intensive de caractères spéciaux chargés de sens dans la [[syntaxe]] du langage, comme on peut le voir dans cet exemple de programme:
<source lang="perl">
# Un exemple de programme en Perl
$message = "À l'endroit : 'camel'.\n";
print $message;
$message =~ s/endroit/envers/;
$message =~ s/('\w+')/reverse($1)/e;
print $message;
exit 0
</source>
et sa sortie à l'écran :
<source lang="text">
À l'endroit : 'camel'.
À l'envers : 'lemac'.
</source>
Les troisième et quatrième lignes de cet exemple montrent l'usage d'[[expression rationnelle|expressions rationnelles]].
Ces caractères spéciaux sont liés à la puissance de traitement de Perl :
*''scalaires'' désignés par '''$''' : ''$nom = "Toto"; $z=3;''
*''tableaux'' désignés par '''@''', indexés par '''[]''' : ''$nom[95] = "Val d'Oise";'' (le 96e élément du tableau est comme les autres un ''scalaire''!)
*''tableaux associatifs'', ou ''hashs'' désignés par '''%''', indexés par '''{}''' : ''$code{"Val d'Oise"} = 95;'' (leurs éléments sont des scalaires aussi)
== Faux amis ==
Certains mots ont un sens différent en Perl que celui dans la littérature non Perl. Pour chaque mot, nous donnons le nom français, le nom anglais entre parenthèses, et la définition en terme du vocabulaire
du wikipédia.
* Une ''fonction'' (function) est une [[fonction (informatique)|fonction]] prédéfinie par le langage.
* Une ''routine'', aussi appelée ''sous-routine'', (subroutine) est une fonction définie dans le programme ou une bibliothèque utilisée.
== Aspects communautaires ==
Perl a une base d'utilisateurs vaste et diversifiée. Pour plusieurs types d'utilisateurs du langage, c'est d'ailleurs leur seul point commun. Les administrateurs système en sont friands, les développeurs en apprécient la concision et la puissance, des linguistes et des biologistes - habituellement peu enclins à se pencher sur le code - l'utilisent comme langage de référence dans leurs applications métiers. Perl est particulièrement apprécié en [[bio-informatique]] où les programmes font l'objet de remaniements constants.
La base [[CPAN]] regroupe et met gratuitement à la disposition des utilisateurs de Perl du monde entier ''15,4 millions de ligne de code'' (juillet 2004) sous forme de ''modules'' Perl et de ''synopsis'' montrant comment les mettre en œuvre. L'effet boule de neige est indiscutable. La [[synergie]] aussi.
=== Trivia ===
On écrit généralement le nom de ce langage avec un ''P'' [[majuscule]] pour désigner le langage et un ''p'' [[Bas-de-casse|minuscule]] en parlant de l'[[interpréteur]] : « seul perl analyse correctement Perl. » Une conséquence est qu'un système de [[coloration syntaxique]] d'un programme Perl devrait utiliser l'interpréteur perl pour être totalement correct. En pratique, des modules pur Perl comme [http://search.cpan.org/dist/Perl-Tidy/ Perl::Tidy] et [http://search.cpan.org/dist/PPI/ PPI] arrivent à comprendre correctement la majeure partie du code courant.
Un canular organisé par l'équipe de direction de l'éditeur [[O'Reilly Media|O'Reilly]] avec la complicité de [[Larry Wall]] et [[Guido van Rossum]] (avec annonce d'un livre imaginaire dont l'annonce donnait le fac-simile) a annoncé à une époque la fusion en un langage unique nommé aussi ''Parrot'' de Perl 6 et de [[Python (langage)|Python]], à la grande panique de certains aficionados des deux langages.
Compte-tenu du rôle qu'a eu Perl dans le développement de la « nouvelle économie », une boutade prêtait à la mairie de New York l'intention de rebaptiser [[Wall Street]] du nom de son inventeur, ce qui aurait au moins le mérite de ne pas entraîner du tout de frais pour le contribuable !
=== Logiciels écrits en Perl ===
* Diverses bibliothèques couvrent le continuum des [[Système de gestion de contenu|systèmes de gestion de contenu]], des [[wiki]]s et des [[blog]]s. Perl est au cœur de sites comme [[Slashdot]], [[Everything2]], [[Kuro5hin]], [[LiveJournal]]
* [http://bestpractical.com/rt Request Tracker], un système de gestion de bugs
* [[Automake|GNU Automake]] génère des [[makefile]]s [[portabilité|portables]]
* [[Fink]] est un projet [[open source]] destiné à porter vers [[Mac OS X]] des applications originellement écrites pour [[UNIX]]
* [[SVK (informatique)|SVK]] est un système de gestion de version de code. C'est une extension de [[Subversion (logiciel)|Subversion]]
* [[Movable Type]] est une plateforme de publication pour entreprises, utilisée par des sociétés comme [[General Motors]]
* [[Blosxom]] (prononcer «blossomme») est un logiciel de [[blog]] et un [[système de gestion de contenu]]
* [[Sympa]], gestionnaire de listes de diffusion
* [[SpamAssassin]], filtre courriel anti-spam
* [[Bugzilla]], gestionnaire de bugs
* [[Webmin]], logiciel de configuration d'une machine via une interface web
* [[Drakconf]], le système interactif de configuration de [[Mandriva]]
* [[Urpmi]], le gestionnaire de packages de Mandriva, ainsi que l'installeur et les outils de configuration sont tous écrits en Perl
* [[Frozen Bubble]], jeu d'arcade
* [[Open Webmail]]
* [[AWStats]], analyseur de logs
* [[Mioga]], outil de travail collaboratif
* [[Rational]] : [[ClearCase]] (gestion de configuration), [[ClearQuest]]
* Des [[robot IRC|robots IRC]] sont écrits en Perl (infobot) ou proposent des interfaces Perl (eggdrop)
* [[Koha]], Premier [[SIGB]] sous licence libre
== Annexes ==
=== Bibliographie ===
==== Généralités ====
* Larry Wall, Tom Christiansen et Jon Orwant ([[2001]]), ''Programmation en Perl'', ISBN 2-84177-140-7
==== Applications ====
* James Tisdall, ''Introduction à Perl pour la bioinformatique'', O'Reilly, ISBN 2841772063
=== Voir aussi ===
* [[APL (langage)|APL]] | [[Lisp]] | [[Langage de programmation Python|Python]] | [[Ruby]] | [[Tool Command Language|Tcl]]
* [[Expression rationnelle]]
* [[SciTE]]
* [[Calculateur quantique#Simulation d'un ordinateur quantique|Perl et le calcul quantique]]
* [[DWIM]]
* [[Principe de Huffman]]
=== Références ===
<references/>
=== Liens externes ===
==== Ressources majeures ====
* {{en}} [http://www.perl.org/ Portail Perl officiel]
* {{en}} [http://www.perlfoundation.org/ La Fondation Perl], qui finance le développement de Perl et l'organisation des conférences
* {{fr}} [http://perl.enstimac.fr/ La documentation Perl, en français] (version PDF disponible)
* {{en}} [http://www.cpan.org/ CPAN], le Comprehensive Perl Archive Network est un réseau de miroirs proposant des milliers de modules, pour répondre à tous les besoins ou presque
==== Divers ====
* {{en}} [http://perlcast.com/ Perlcast], un podcast consacré à Perl
* {{en}} {{dmoz|Perl|http://www.dmoz.org/Computers/Programming/Languages/Perl/}}
* {{fr}} {{dmoz|Perl|http://www.dmoz.org/World/Fran%c3%a7ais/Informatique/Programmation/Langages/Perl/}}
* {{fr}} [http://www.projet-plume.org/fiche/perl Fiche PLUME], une fiche synthétique de description de Perl
{{Portail | Informatique | Logiciels libres | programmation informatique}}
{{lien BA|de}}
{{lien BA|en}}
[[Catégorie:Langage de programmation]]
[[Catégorie:Langage impératif]]
[[Catégorie:Langage de script]]
[[Catégorie:Perl]]
[[Catégorie:Logiciel libre]]
[[als:Perl]]
[[ar:بيرل]]
[[bat-smg:Perl]]
[[bg:Пърл (език за програмиране)]]
[[bn:পার্ল (প্রোগ্রামিং ভাষা)]]
[[bs:Perl]]
[[ca:Perl]]
[[cs:Perl]]
[[cy:Perl]]
[[da:Perl]]
[[de:Perl]]
[[el:Perl]]
[[en:Perl]]
[[eo:Perl]]
[[es:Perl]]
[[et:Perl]]
[[eu:Perl]]
[[fa:پرل]]
[[fi:Perl]]
[[ga:Perl]]
[[gl:Perl]]
[[he:Perl]]
[[hr:Perl]]
[[hu:Perl]]
[[id:Perl]]
[[it:Perl]]
[[ja:Perl]]
[[ka:პერლი]]
[[ko:펄]]
[[ku:Perl]]
[[la:Perl]]
[[lb:Perl (Programméiersprooch)]]
[[lt:Perl]]
[[ml:പേള്]]
[[ms:Perl]]
[[nl:Perl (programmeertaal)]]
[[nn:Perl]]
[[no:Perl]]
[[pdc:Perl]]
[[pl:Perl]]
[[pt:Perl]]
[[ro:Perl]]
[[ru:Perl]]
[[sh:Perl]]
[[simple:Perl]]
[[sk:Perl]]
[[sl:Perl]]
[[sq:Perl]]
[[sr:Програмски језик Перл]]
[[sv:Perl]]
[[ta:பெர்ள்]]
[[tg:Перл (забони барномасозӣ)]]
[[th:ภาษาเพิร์ล]]
[[tr:Perl]]
[[uk:Perl]]
[[vi:Perl]]
[[zh:Perl]]
[[zh-min-nan:Perl]]