Préface▲
À la poursuite du bonheur▲
Perl est un langage qui vous aide à faire votre travail.
Bien sûr, si votre travail consiste à programmer, vous pouvez le faire avec n'importe quel langage informatique « complet », du moins en théorie. Mais nous savons par expérience que les langages informatiques ne diffèrent pas tant par ce qu'ils rendent possible que par ce qu'ils rendent facile. D'un côté, les langages soi-disant de « quatrième génération » facilitent certaines tâches, mais en rendent d'autres quasiment impossibles. De l'autre côté, certains langages bien connus, « de qualité industrielle », rendent à peu près tout difficile.
Perl est différent. En résumé, Perl est conçu pour simplifier les tâches faciles, sans rendre les tâches difficiles impossibles.
Et quelles sont ces « tâches faciles » qui devraient le rester ? Celles que l'on rencontre tous les jours, bien sûr. Il faut un langage qui facilite la manipulation des nombres, de texte, des fichiers et des répertoires, des ordinateurs et des réseaux, et surtout des programmes. Il devrait être facile de lancer des programmes externes et de scruter leur sortie à la recherche d'informations intéressantes. Il devrait être facile d'envoyer ces informations vers d'autres programmes qui les manipuleront intelligemment. De même, il devrait être facile de développer, de modifier et de mettre au point vos propres programmes. Et, bien sûr, il devrait être facile de compiler et de lancer ces programmes, de les porter facilement, ceci sur n'importe quel système d'exploitation moderne.
Perl fait tout cela, et plus encore.
Au départ conçu comme un langage pour administrer UNIX, Perl a été porté sur la plupart des systèmes d'exploitation. De fait, Perl est l'un des environnements de programmation les plus portables de nos jours. Pour rendre un programme C ou C++ portable, il faut y inclure ces étranges balises #ifdef
différentes pour chaque système cible. Pour rendre un programme Java portable, il est nécessaire de comprendre toutes les particularités de chaque nouvelle implémentation de Java. Pour porter un script shell il est nécessaire de se souvenir de la syntaxe pour chaque version du système cible, et ceci pour chaque commande, et donc de trouver le plus petit dénominateur commun, qui avec un peu de chance fonctionnera partout. Pour porter un programme écrit en Visual Basic, il faudra alors une définition plus souple du mot portable. :-)
Perl, par on ne sait quelle magie, évite de tels problèmes en retenant les côtés positifs de ces langages. Cette magie a plusieurs sources : l'utilité de ces méthodes, la créative communauté Perl et la floraison du logiciel libre. Mais surtout, cette magie vient de son caractère hybride : Perl est un langage métissé et a toujours vu cette diversité non comme une faiblesse, mais comme une force. Alors, si vous avez envie de goûter à la liberté, Perl est fait pour vous.
Perl n'a pas de frontières. À l'origine de l'explosion du langage Perl, il y a le désir des premiers programmeurs système Unix de ne garder que le meilleur de cet « ancien monde ». Pour ceux-ci, Perl est une distillation portable de la culture Unix, et une oasis dans un désert sans issue. Ce qui est satisfaisant, c'est que l'on peut tout aussi bien retraverser de l'autre côté : les designers de sites web sont heureux de pouvoir faire fonctionner leurs scripts Perl sans modification sur le serveur de leur société.
La raison pour laquelle Perl est si populaire parmi les programmeurs système et les développeurs de sites web, c'est tout simplement parce qu'ils l'ont découvert en premier ; mais Perl aspire à une plus large audience. Depuis ses débuts, comme simple langage traducteur d'autres langages, Perl s'est développé comme un langage sophistiqué et très général, accompagné d'un système de développement complet avec débogueur, optimiseur, référenceur croisé, compilateur, éditeur orienté syntaxe et toute une bibliothèque de modules en faisant ainsi un véritable langage de programmation. Mais ce qui différencie vraiment Perl, c'est qu'il a toujours su garder une vision simple des choses qui l'intéressent.
Sa puissance et son accessibilité le rendent utilisable dans tous les domaines de la connaissance, de l'ingénierie spatiale à la biologie moléculaire, des mathématiques à la linguistique, du graphisme au traitement des documents, de la gestion des bases de données à celle des réseaux. Perl est utilisé pour traiter rapidement une grande quantité d'informations, aussi bien des séquences ADN que des pages web. Aussi, l'une des plaisanteries de la communauté Perl, est que le prochain krach boursier sera probablement déclenché par un bogue dans un script Perl. (L'avantage est que les analystes boursiers au chômage pourront toujours se reconvertir.)
Il existe de nombreuses raisons au succès de Perl. Le langage Perl fut l'un des premiers projets de la communauté du logiciel libre. Perl est libre et le sera toujours. Grâce à sa licence très ouverte, vous pouvez l'utiliser où bon vous semble : au travail ou dans des applications commerciales, sans restriction et sans redevance. Et s'il survient une difficulté que la communauté Perl ne peut résoudre, vous disposez en dernier recours du code source. Elle n'est pas du genre à vous faire payer des mises à jour. Elle ne mettra pas la clef sous la porte en laissant votre programme orphelin.
Que Perl soit un langage libre l'a sûrement beaucoup aidé. Mais c'est aussi le cas de la plupart des logiciels libres qui prospèrent. Perl autorise tous ces degrés de liberté, car c'est un langage dont la personnalité est éclatée. Il s'agit d'un langage à la fois très simple et très riche. Il a pris de bonnes idées presque partout, et les a implantées dans un cadre facile à utiliser. Pour ceux qui l'aiment sans plus, Perl est le Practical Extraction and Report Language. Pour ceux qui ne jurent que par lui, Perl est le Pathologically Eclectic Rubbish Lister. Pour les minimalistes du lot, Perl ressemble à une démonstration de redondance inepte. Pas de problème. Le monde a besoin de quelques réductionnistes (surtout chez les physiciens). Les réductionnistes aiment isoler les choses. Nous, nous essayons de leur donner un sens.
Perl est par bien des aspects un langage simple. Point n'est besoin de connaître de nombreuses incantations mystérieuses pour compiler un programme Perl ; il suffit de l'exécuter comme un script shell. Les types et les structures employés par Perl sont faciles à utiliser et à comprendre. Perl n'impose pas de limitation arbitraire à vos données ; vos chaînes et vos tableaux peuvent croître tant qu'ils veulent (tant qu'il reste de la mémoire) et ils sont conçus pour s'adapter à leur croissance. Au lieu de vous forcer à apprendre de nouvelles syntaxes et de nouveaux concepts, Perl emprunte de nombreuses notions à d'autres langages qui peuvent vous être familiers (comme le C, awk, BASIC, Python, l'anglais et le grec). En fait, pratiquement n'importe quel programmeur peut lire un bout de code Perl bien écrit et se faire une idée de son fonctionnement.
Le plus important est le fait que vous n'avez pas besoin de tout connaître de Perl avant de pouvoir écrire des programmes utiles. On peut apprendre Perl « par le petit bout de la lorgnette ». Vous pouvez programmer comme un enfant qui commence à parler, nous vous promettons de ne pas rire. De nombreuses idées de Perl sont empruntées au langage naturel, et l'une des meilleures est qu'il n'y a aucun problème à utiliser un sous-ensemble du langage tant qu'on arrive à ses fins. N'importe quel niveau de compétence technique est acceptable dans la culture Perl. Il n'existe pas de police du langage. Un script Perl est « correct » s'il vous aide à terminer votre travail avant que le patron ne vous mette dehors.
Bien qu'il soit simple par de nombreux aspects, Perl est également un langage riche dont il y a beaucoup à apprendre. C'est le prix à payer pour faciliter ce qui est difficile. Il vous faudra un certain temps pour en assimiler toutes les possibilités, mais vous serez heureux d'avoir accès à ses remarquables capacités quand vous en aurez besoin. Nous avons fait remarquer plus haut que Perl emprunte de nombreuses aptitudes aux shells et au C, mais il possède aussi un sur-ensemble strict de celles de sed et de awk. Il existe en fait des traducteurs fournis avec Perl pour transformer les anciens scripts sed et awk en scripts Perl, et vous pouvez donc voir comment les fonctionnalités avec lesquelles vous pouvez déjà être familiers correspondent à celles de Perl.
En raison de cet héritage, Perl était déjà riche alors même qu'il n'était qu'un langage de réduction de données, conçu pour naviguer dans des fichiers, scruter de grandes quantités de texte, créer et obtenir des données dynamiques et afficher des rapports facilement formatés se basant sur ces données. Mais à un moment donné, Perl a commencé à s'épanouir. Il est alors devenu un langage de manipulation de systèmes de fichiers, de gestion de processus, d'administration de bases de données, de programmation client-serveur, de programmation sécurisée, de gestion d'informations basées sur le Web, et même de programmation orientée objet et fonctionnelle. Ces possibilités n'ont pas été simplement collées après coup ; chacune fonctionne en synergie avec les autres, parce que Perl a été conçu dès le départ comme un langage d'intégration.
Mais Perl peut intégrer plus que ses propres capacités. Perl est conçu pour être extensible de façon modulaire. Perl vous permet de rapidement concevoir, programmer, mettre au point et déployer des applications, mais il vous permet également d'étendre aisément les fonctionnalités de ces applications quand le besoin s'en fait sentir. On peut intégrer Perl à d'autres langages, et on peut intégrer d'autres langages à Perl. Le mécanisme d'importation de modules permet d'utiliser ces définitions externes comme s'il s'agissait de fonctionnalités propres à Perl. Les bibliothèques orientées objet conservent cette propriété.
Perl vous assiste en bien d'autres manières. Perl compile d'abord votre programme dans un code intermédiaire, alors qu'un langage interprété classique compile et exécute une commande à la fois. Il effectue diverses optimisations comme tout autre compilateur et donne des résultats instantanés concernant entre autres les erreurs de syntaxe et les problèmes de liaison avec les bibliothèques. Une fois que la partie en amont a validé le programme, elle passe le code intermédiaire à l'interpréteur en aval qui l'exécute (ou, si l'on préfère, à une autre routine de traitement capable d'émettre du code C ou du langage machine). Tout ceci peut paraître compliqué, mais le compilateur et l'interpréteur sont assez efficaces, et la plupart d'entre nous comptent le cycle compiler-lancer-déboguer en secondes. Ce cycle rapide associé à une gestion « douce » des erreurs fait de Perl un langage idéal pour le prototypage. Au fur et à mesure que le programme se développe, on peut resserrer les boulons et programmer avec moins de flair mais plus de discipline. Perl vous y aide également, quand vous le lui demandez gentiment.
Perl vous permet aussi d'écrire des programmes plus sûrs. En plus des interfaces de sécurité implémentées par les autres langages, un mécanisme de traçage automatique des sources d'insécurité, bloque toute opération dangereuse. Enfin, Perl permet de définir des compartiments spécialement protégés dans lesquels on peut exécuter en toute sécurité du code Perl d'origine douteuse, en masquant les opérations dangereuses.
Mais, paradoxalement, la meilleure aide que Perl puisse vous apporter n'a presque rien à voir avec Perl, mais tout à voir avec les gens qui l'utilisent. Les Perlistes comptent parmi les gens les plus utiles sur terre, vraiment. S'il existe un aspect religieux au mouvement Perl, c'est celui-là. Larry a voulu que la communauté Perl fonctionne comme un bout de paradis, et il semble que son souhait se soit réalisé jusqu'à présent. Puissiez-vous faire de votre mieux pour que cela continue.
Que vous appreniez Perl parce que vous voulez sauver le monde, ou simplement parce que vous êtes curieux, ou encore parce que votre patron vous a dit de vous y mettre, ce livre vous mènera de ses bases les plus élémentaires vers ses labyrinthes les plus obscurs. Et même si nous n'avons pas l'intention de vous apprendre à programmer, le lecteur attentif en retirera un peu de l'art, et de la science, de la programmation. Nous vous encouragerons à développer les trois grandes vertus du programmeur : la paresse, l'impatience et l'orgueil. Tout au long de ce parcours, nous espérons que vous trouverez ce livre assez amusant par certains côtés (et d'un humour ravageur par d'autres). Et si rien de tout cela ne vous suffit, souvenez-vous que l'apprentissage de Perl enrichira votre curriculum vitae. Continuez donc votre lecture.
Ce qui est nouveau dans cette édition▲
Presque tout...
Sauf des morceaux choisis de la précédente édition (et ils étaient nombreux), nous avons entièrement révisé la présente édition pour plusieurs raisons. Premièrement nous avons voulu rendre le livre accessible à un plus large public. Il y a très peu de prérequis. Nous avons volontairement choisi un style vivant pour garder éveillés ceux qui en auraient beaucoup (des prérequis).
Deuxièmement, nous avons présenté les derniers développements de Perl. Même si ceux-ci restent à l'état d'expérience de laboratoire, le noyau central est solidement planté. La foulée à adopter pour suivre le développement de certaines extensions, peut être torride. C'est pourquoi nous vous indiquerons d'aller voir plutôt la documentation en ligne, pour préciser certains aspects, car Perl est un langage de mécanicien et on peut confondre un boulon de 8 avec un boulon de 10.
Enfin, nous avons adapté cette édition pour en faciliter la lecture, en séparant les chapitres en parties introduisant chacune un concept, dans le but de mieux saisir l'ensemble. Cette nouvelle édition s'organise ainsi :
Partie I, Survol de Perl
- Le démarrage est toujours difficile. Cette partie présente les idées fondamentales du langage sur un ton informel et est à lire au coin du feu. Il s'agit plus d'un marchepied que d'un didacticiel complet, et elle peut ne pas correspondre aux besoins de tout le monde. Voir la section Documentation papier pour les livres qui pourraient mieux convenir.
Partie II, Séance de dissection
- Cette partie est un développement à bâtons rompus et en profondeur des mécanismes essentiels du langage à chaque niveau d'abstraction, depuis les types de données, les variables, les expressions régulières jusqu'aux routines, modules et objets. Vous y acquerrez une bonne mesure du fonctionnement de ce langage ainsi que quelques bonnes méthodes de conception de logiciels. (Et si vous n'avez jamais utilisé un langage permettant la reconnaissance des modèles, vous allez avoir un traitement de faveur.)
Partie III, Technique Perl
- Il est possible de faire beaucoup de choses avec Perl et ce chapitre vous emmènera beaucoup plus loin. Ici, vous apprendrez comment répondre à tous les défis lancés par votre machine, depuis le traitement des caractères Unicode, la communication entre processus, le multithreading, la compilation, le débogage et l'optimisation de Perl, jusqu'à l'écriture de vos propres extensions en C ou C++ ou l'interfaçage de toute API. Perl est tout à fait adapté pour communiquer avec votre PC, et si besoin avec les autres PC sur Internet.
Partie IV, Culture Perl
- Toute culture ayant un langage, la communauté Perl a vite compris qu'elle devait se forger une culture. Nous verrons dans cette partie la programmation Perl dans la vie de tous les jours. Nous verrons comment reconnaître les bons des méchants, et aussi comment nous améliorer pour produire des programmes réutilisables par tout le monde.
Partie V, Références
- Nous avons regroupé dans cette partie tous les termes importants de chaque chapitre, depuis les variables et fonctions spéciales, aux modules et pragmas standards. Le glossaire sera particulièrement utile à ceux qui ne sont pas familiers avec le jargon informatique. Par exemple, si vous ignorez le sens du terme « pragma », vous pouvez le découvrir dès maintenant.
Distribution standard▲
Aujourd'hui, la grande majorité des systèmes d'exploitation comprennent une distribution de Perl en standard. Au moment où ces lignes sont écrites, les systèmes AIX, BeOS, BSDI, Debian, DG/X, DYNIX/ptx, FreeBSD, IRIX, LynxOS, Mac OS X, OpenBSD, Red-Hat, SINIX, Slackware, Solaris, SuSE, Mandrake et Tru64, sont tous distribués avec une version de Perl en standard. Certaines sociétés fournissent Perl sur un CD de distribution libre ou bien par l'intermédiaire de leur service client. Des sociétés tierces comme ActiveState, proposent des distributions pour différents systèmes y compris Microsoft.
Même si votre distributeur livre Perl en standard, vous aurez probablement envie de compiler et d'installer Perl vous-même. Vous serez ainsi certain d'avoir la dernière version, et de pouvoir installer où bon vous semble la documentation ainsi que les bibliothèques. Vous pourrez aussi choisir parmi les différentes options de compilation telles que le multithreading, la gestion des grands fichiers, ou bien les options de débogage de bas niveau disponibles par le sélecteur -D. (Le débogage niveau utilisateur est toujours supporté.)
La façon la plus simple d'obtenir les sources de Perl est d'aller à www.perl.com, où vous trouverez les informations les plus importantes, ainsi que des liens vers des distributions binaires spécifiques aux plates-formes sans compilateurs C.
Vous pouvez aussi vous rendre directement sur le CPANComprehensive Perl Archive Network (Comprehensive Perl Archive Network, décrit au chapitre 22, CPAN, à l'adresse http://www.Perl.com/CPAN ou bien http://www.cpan.org. Si ces adresses sont trop lentes (c'est possible car elles sont très populaires), vous pouvez choisir aussi un miroir plus proche de chez vous. Les adresses URL suivantes ont été choisies parmi les centaines de miroirs CPAN dans le monde :
- http://www.funet.fi/pub/languages/Perl/CPAN/
- ftp://ftp.funet.fi/pub/languages/Perl/CPAN/
- ftp://ftp.cs.colorado.edu/pub/Perl/CPAN/
- ftp://ftp.cise.ufl.edu/pub/Perl/CPAN/
- ftp://ftp.Perl.org/pub/Perl/CPAN/
- http://www.Perl.com/CPAN-local
- http://www.cpan.org/
- http://www.Perl.org/CPAN/
- http://www.cs.uu.nl/mirror/CPAN/
- http://CPAN.pacific.net.hk/
Les deux premières de la liste, sur le site funet.fi, pointent sur le répertoire maître de tous les sites CPAN. Le fichier MIRRORED.BY contient la liste de tous les sites pour laisser le choix du site miroir ainsi que du protocole pour le téléchargement (FTP ou HTTP), ce qui est utile lorsque votre réseau est derrière un firewall. Le site multiplexeur http://www.Perl.com/CPAN vous aide à faire cette sélection.
Une fois que vous avez récupéré et décompacté le code source dans un répertoire, vous devez lire les fichiers README et INSTALL pour comprendre comment construire l'exécutable Perl. Il peut aussi y avoir un fichier INSTALL. platform où platform désigne votre plate-forme système.
Si votre platform est un système Unix ou similaire, alors les commandes pour charger, configurer, construire et installer Perl seront celles qui suivent. Premièrement vous devez utiliser une commande pour charger le code source. Avec ftp :
% ftp ftp://ftp.funet.fi/pub/languages/Perl/CPAN/src/latest.tar.gz
(vous pouvez substituer un miroir CPAN plus proche. Si vous habitez en Finlande c'est votre miroir CPAN le plus proche.) Si vous ne pouvez utiliser ftp, alors télécharger sur le Web avec un navigateur ou bien la ligne de commande suivante :
% wget http://www.funet.fi/pub/languages/Perl/CPAN/src/latest.tar.gz
Ensuite, il faut décompacter, configurer, construire et installer :
% tar zxf latest.tar.gz ou gunzip, et ensuite tar xf.
% cd Perl-5.6.0 ou 5.* pour toute version.
% sh Configure -des Réponses par défaut.
% make test && make install En mode super-utilisateur.
Ces commandes s'effectuent dans un environnement de développement C conventionnel, et nécessitent donc un compilateur C. Pour connaître les différentes mises à jour et versions de Perl pour chaque plate-forme, si vous avez besoin d'une version standard ou d'un portage spécial, explorez le répertoire CPAN ports. Des liens sont disponibles pour télécharger ces portages spéciaux ou pour les systèmes ne disposant pas de compilateurs C.
Documentation en ligne▲
L'importante documentation en ligne de Perl fait partie de la distribution standard. (Voir la section suivante pour la documentation papier.) Chaque module CPAN est accompagné de sa documentation.
Quand nous faisons référence au « manuel Perl », nous parlons de l'ensemble des pages en ligne du manuel Perl, sur votre PC. Le terme manuel est purement une convention indiquant un fichier contenant de la documentation (nul besoin d'un programme man pour la lire. Elles peuvent même être au format HTML sur les systèmes différents d'Unix.
Le manuel Perl en ligne a été divisé en différentes sections, pour pouvoir facilement trouver ce que l'on cherche sans avoir à parcourir des centaines de pages de texte. Le manuel Perl de base se nomme perl, et on y accède avec la commande man perl(1). Ce manuel vous orientera vers d'autres plus spécifiques. Par exemple man perlre affichera le manuel des expressions régulières de Perl. La commande perldoc fonctionne souvent sur les systèmes où la commande man ne fonctionne pas. Sur Mac, il faut utiliser le programme Shuck. Votre distribution peut aussi fournir le manuel Perl au format HTML, ou bien le format d'aide natif du système hôte.
Consultation du manuel standard▲
À l'origine du langage, en 1987, le manuel perl était un document concis d'environ vingt-quatre pages dactylographiées. La section concernant les expressions régulières n'occupait que deux paragraphes. (Avec la connaissance de la commande egrep cela pouvait suffire.) D'une certaine façon tout a changé depuis : de la documentation standard, les différents utilitaires, l'information pour le portage entre les différentes plates-formes et les centaines de modules standard, il y a maintenant plus de 1500 pages dactylographiés de documentation réparties entre plusieurs manuels. (Sans compter les modules CPAN que vous installerez.)
D'un autre côté rien n'a changé : le manuel de base perl existe toujours, et c'est toujours le point de départ si vous êtes perdus. La différence est que lorsque vous y êtes, vous ne pouvez vous y arrêter. La documentation Perl n'est plus une petite épicerie mais un grand centre commercial avec des centaines de magasins où il est nécessaire de savoir où l'on est pour savoir où l'on va. Une fois que l'on connaît le plan, il est facile de s'orienter.
Voici quelques points de repère que vous pourrez rencontrer :
Manuel |
Sujet |
---|---|
perl |
Les différents manuels Perl disponibles. |
perldata |
Les types de données. |
perlsyn |
La syntaxe Perl. |
perlop |
Précédence des opérateurs. |
perlre |
Les expressions régulières. |
perlvar |
Les variables prédéfinies. |
perlsub |
Les routines Perl. |
perlfunc |
Les fonctions prédéfinies. |
perlmod |
Mise en œuvre des modules. |
perlref |
Les références. |
perlobj |
Les objets. |
perlipc |
La communication interprocessus. |
perlrun |
L'utilisation des commandes Perl avec sélecteurs. |
perldebug |
Le débogage. |
perldiag |
Les messages de diagnostic. |
C'est juste un aperçu, mais ce sont les entrées essentielles : si vous voulez connaître un opérateur, perlop vous donnera la réponse, et si vous cherchez une chose sur les variables prédéfinies, regardez dans perlvar. Pour comprendre un message d'erreur, allez dans perldiag. Et ainsi de suite.
Les FAQ (questions revenant fréquemment) sont une partie standard du manuel Perl. Elles sont divisées en neuf manuels différents :
Manuel |
Sujet |
---|---|
perlfaq1 |
Les questions générales sur Perl. |
perlfaq2 |
La récupération et l'apprentissage de Perl. |
perlfaq3 |
Les outils de programmation. |
perlfaq4 |
Les manipulations des données. |
perlfaq5 |
Les fichiers et formats. |
perlfaq6 |
Les expressions régulières. |
perlfaq7 |
Les questions d'ordre général sur le langage. |
perlfaq8 |
L'interaction avec le système. |
perlfaq9 |
La connexion au réseau. |
Certains manuels rassemblent des notes spécifiques à certaines plates-formes :
Manuel |
Sujet |
---|---|
perlamiga |
Le portage sur Amiga. |
perlcygwin |
Le portage sur Cygwin. |
perldos |
Le portage sur MS DOS. |
perlhpux |
Le portage HP UX. |
perlmachten |
Le portage sur Power MachTen. |
perlos2 |
Le portage sur OS/2. |
perlos390 |
Le portage sur OS/390. |
perlvms |
Le portage sur DEC VMS. |
perlwin32 |
Le portage sur MS-Windows. |
(Voir aussi le chapitre 25, Portabilité, et le répertoire des portages du CPAN déjà décrit pour toute information relative à ce sujet.)
Recherche dans le manuel▲
N'essayez pas de lire les 1500 pages du manuel, autant chercher une aiguille dans une botte de foin. Il y a un vieux dicton qui dit qu'on ne peut pas grapper des arbres morts.(2) Chacun des manuels Perl, dispose de son propre outil de recherche et de visualisation. Il est possible de chercher une page du manuel en indiquant la commande constituée du nom du manuel suivi d'une expression régulière comme paramètre (voir le chapitre 5, Recherche de motif) :
% perlop comma
% perlfunc split
% perlvar ARGV
% perldiag 'assigned to typeglob'
Il est possible d'étendre la recherche sur un manuel entier, par exemple pour chercher dans les FAQ, utilisez la commande perlfaq (qui est aussi un manuel) :
% Perlfaq round
La commande perltoc (aussi un manuel) cherche dans le sommaire général de tous les manuels :
% perltoc typeglob
Perl5005delta: Undefined value assigned to typeglob
Perldata: Typeglobs and Filehandles
Perldiag: Undefined value assigned to typeglob
Ou alors, pour trouver une chaîne dans toutes les ressources en ligne du manuel, incluant les en-têtes, les descriptions et exemples, utilisez la commande perlhelp :
% perlhelp CORE::GLOBAL
Voir le manuel perldoc pour les détails.
Les autres manuels▲
Quand nous parlons de documentation non-Perl, comme dans getitimer(2), nous faisons référence aux manuels getitimer dans la section 2 du manuel Unix Programmer's Manual.(3) Les pages du manuel pour les appels système tel getitimer peuvent ne pas être présentes sur les systèmes non Unix, mais ce n'est pas grave car vous ne pouvez pas les utiliser dans ce cas. Si vous en avez vraiment besoin, vous les trouverez facilement publiés sur le Web — une recherche rapide de « +crypt(3) +manual » avec AltaVista vous permettra d'en obtenir plusieurs versions.
Même si les principaux manuels Perl sont installés dans la section 1 du répertoire standard de man, nous omettrons l'indice (1) quand nous y ferons référence dans ce livre. Vous les reconnaîtrez néanmoins sans difficulté car ils sont tous de la forme « perlmumble ».
Documentation papier▲
Voici quelques titres de la littérature Perl que nous vous recommandons :
- Perl 5 Précis et concis, 2e ed., de Johan Vromans (O'Reilly, 2000). Ce manuel au format poche est une référence pratique et rapide.
- Perl en action, par Tom Christiansen et Nathan Torkington (O'Reilly, 1998). Un livre pour accompagner celui-ci.
- Elements of Programming with Perl, Andrew L. Johnson (Manning, 1999). Pour commencer à partir de 0 en utilisant Perl, pour les non programmeurs.
- Introduction à Perl, 2e ed., par Randal Schwartz et Tom Christiansen (O'Reilly, 1997). Pour les administrateurs et programmeurs du système Unix : l'utilisation de 30 % du langage dans 70 % des cas. La version sur le système Microsoft revue par Erik Olson s'appelle LearningPerl for Win32 Systems.
- Perl: The Programmer's Companion, par Nigel Chapman (Wiley, 1997). Ce livre très concis est destiné aux ingénieurs et programmeurs en informatique et considère Perl indépendamment de la plate-forme, d'une manière complète.
- Maîtrise des expressions régulières, par Jeffrey Friedl (O'Reilly, 1997). Bien qu'il n'inclut pas les derniers ajouts sur les expressions régulières, il reste une référence indispensable pour quiconque cherche à mieux comprendre comment celles-ci fonctionnent.
- Object Oriented Perl, par Damian Conway (Manning, 1999). Pour les débutants aussi bien que les programmeurs objet avancés, ce livre étonnant développe des techniques simples et exotiques dans le but d'écrire des systèmes objets puissants en Perl.
- Mastering Algorithms with Perl, par Jon Orwant, Jarkko Hietaniemi et John Macdonald (O'Reilly, 1999). Toutes les techniques utiles d'un cours sur les algorithmes, sans les preuves ardues. Ce livre couvre les algorithmes fondamentaux dans le domaine des graphes, du traitement de texte, des ensembles et plein de bonnes choses encore.
- Writing Apache Modules with Perl and C, par Lincoln Stein et Doug MacEachern (O'Reilly, 1999). Ce guide de la programmation web enseigne comment étendre les capacités du serveur Apache en utilisant le module turbo mod_Perlpour l'exécution rapide des scripts CGI ainsi que l' API de ce serveur accessible à Perl.
- The Perl Journal, édité par Jon Orwant. Ce magazine trimestriel créé par des programmeurs pour des programmeurs, détaille des trucs et astuces, parle des dernières nouvelles et de plein d'autres choses encore.
Il existe une pléthore de livres et de publications sur le sujet et nous avons sûrement oublié des références (nous avons négligé sans pitié les mauvaises).
En plus de ceux que nous venons de citer, nous vous recommandons les livres suivants. Ils n'ont pas un rapport direct avec le langage mais sont très pratiques comme référence, pour la consultation et l'inspiration.
- The Art of Computer Programming, par Donald Knuth, vol. 1, Fundamental Algorithms ; vol. 2, Seminumerical Algorithms ; et vol. 3, Sorting and Searching (Addison-Wesley, 1998).
- Introduction to Algorithms, par Cormen, Leiserson et Rivest (MIT Press and McGraw-Hill, 1990).
- Algorithms in C: Fundamental Data Structures, Sorting, Searching, 3e ed., par Robert Sedgewick (Addison-Wesley, 1997).
- The Elements of Programming Style, par Kernighan et Plauger (Prentice-Hall, 1988).
- The Unix Programming Environment, par Kernighan et Pike (Prentice-Hall, 1984).
- POSIX Programmer's Guide, par Donald Lewine (O'Reilly, 1991).
- Advanced Programming in the UNIX Environment, par W. Richard Stevens (Addison-Wesley, 1992).
- TCP/IP Illustrated, vols. 1-3, par W. Richard Stevens, (Addison-Wesley, 1994-1996).
- Le seigneur des anneaux de J. R. R. Tolkien.
Ressources supplémentaires▲
L'Internet est une merveilleuse invention et nous découvrons tous les jours comment utiliser tout son potentiel. (Certains préféreront « découvrir » l'Internet à la manière dont Tolkien découvre la « Terre du Milieu. »)
Perl sur le web▲
Allez voir la page d'accueil de Perl à l'adresse http://www.Perl.com/. On y parle des nouveautés dans le monde Perl, vous y trouvez du code source et différents reportages, des articles thématiques, de la documentation, les dates des conférences et bien d'autres choses encore.
Allez aussi voir la page des Mongueurs à l'adresse http://www.Perl.org et vous pourrez constater que Perl est comme une herbe sauvage qui pousse partout dans le monde sauf au pôle sud. Des groupes locaux de mongueurs se réunissent régulièrement avec lesquels vous pouvez échanger vos points de vue entre hackers.
Groupe de news Usenet▲
Les groupes de news Perl sont une source d'informations remarquable, bien que parfois confus. comp.lang.Perl.announce est un groupe modéré d'un faible trafic sur les annonces concernant Perl. Il s'agit fréquemment de nouvelles versions, de corrections de bogues, de nouvelles extensions et de nouveaux modules et de FAQ (Frequently Asked Questions, questions fréquemment posées(4)).
Le groupe comp.lang.Perl.misc traite aussi bien des problèmes techniques que de la philosophie de Perl, des jeux en Perl et de la poésie en Perl. Tout comme Perl lui-même, comp.lang.Perl.misc se veut utile, et aucune question n'est trop stupide.(5)
Le groupe comp.lang.Perl.tk discute de l'utilisation du fameux module Perl/Tk. Le groupe comp.lang.Perl.modules concerne le développement et l'utilisation des modules Perl qui sont le meilleur moyen pour réutiliser le code. Il y a d'autres groupes du type comp.lang.Perl.un_groupe qui n'existent pas au moment où nous écrivons ces lignes, alors n'hésitez pas à naviguer.
Si vous n'utilisez pas un lecteur de news classique pour accéder à Usenet, mais plutôt un navigateur web, placez devant le nom du groupe l'en-tête « news: » pour accéder à l'un de ceux que vous cherchez. (Cela fonctionne seulement si vous avez un serveur de news) Vous pouvez aussi les chercher à l'aide de AltaVista ou Deja en précisant « *Perl*» comme nom du groupe d'utilisateurs.
Un dernier groupe d'utilisateurs qu'il vous sera utile de consulter, au moins si vous êtes programmeur CGI, est le groupe comp.infosystems.www.authoring.cgi. Même si ce n'est pas à strictement parler un groupe d'utilisateurs Perl, la plupart des programmes d'exemples sont écrits en Perl, à moins que vous n'utilisez le module Apache mod_Perl, auquel cas vous pouvez consulter comp.infosystems.www.servers.unix.
Rapports de bogues▲
Au cas — improbable — où vous trouviez un bogue propre à Perl et non à votre programme, essayez de le réduire à un cas de test minimal avant de le rapporter via le programme Perlbug qui est fourni avec Perl. Voir le lien http://bugs.Perl.org pour plus d'informations.
De l'aide en français▲
Si vous voulez en savoir plus sur Perl dans un cadre sympathique, il existe des groupes d'utilisateurs francophones de Perl. Voici d'ailleurs un message du fondateur d'un de ces groupes :
- J'espère que ce livre apportera satisfaction aux lecteurs francophones qui désirent (mieux) programmer en Perl. Ce n'est pas toujours possible pour quelqu'un dont l'anglais n'est pas la langue maternelle de comprendre toutes les subtilités des points techniques, ainsi que les plaisanteries et les jeux de mots qui sont légion dans la documentation anglaise. Je crois savoir, pour avoir écouté (et parfois répondu) à leurs questions, que les traducteurs de cet ouvrage n'ont pas failli sur les explications des subtilités techniques et aussi ont-ils fait de leur mieux pour traduire les plaisanteries.
- Toujours est-il que parfois, même en lisant ce livre de manière assidue, on n'arrive pas à comprendre comment faire marcher un module de CPAN, s'il existe un module CPAN qui fait ce que l'on souhaite faire, ou s'il existe de meilleurs moyens pour effectuer une opération. À ce moment-là, on a envie de discuter avec d'autres personnes. Par la plus forte coïncidence, il existe des groupes d'utilisateurs de Perl. J'ai fondé le premier groupe français il y a environ trois ans, à Paris.
- Ce sont des mongers, qu'on pourrait traduire par marchands ; mais que je préfère écrire mongueurs (mongueuses au féminin), pour rester plus fidèle à la prononciation anglaise. Nous avons un site web, ainsi qu'une liste de diffusion qui, en octobre 2001, compte environ 150 abonné(e)s. Nous avons également fondé une association, dont le but est de promouvoir l'utilisation de Perl en France, en soutenant la création de nouveaux groupes d'utilisateurs (à ce jour, Toulouse et Marseille nous ont rejoint) et en organisant des conférences ou des cours consacrés à Perl.
- C'est pourquoi je vous invite à venir nous rencontrer, sur notre site web (http://www.mongueurs.net/), notre liste ou à nos réunions (rendez visite au groupe local près de chez vous ou mieux, fondez-en un !), pour découvrir le côté humain qui se cache derrière le langage qui nous
a tant apporté et qui continue à nous fasciner.
David Landgren
Président de l'association « Les Mongueurs de Perl »
Octobre 2001
Conventions typographiques▲
Nous avons consacré une section propre pour décrire certaines conventions telles les conventions de codage décrites dans Programmation stylée au chapitre 24, Techniques couramment employées. Les conventions lexicales sont indiquées dans le glossaire (notre lexique).
Dans cette édition nous avons utilisé les conventions typographiques suivantes :
Italique
- Elle est utilisée pour les URL, manuels, noms de fichier et programmes. Les termes nouveaux sont en italique la première fois qu'ils apparaissent dans le texte. La plupart sont repris plus précisément dans le glossaire.
Chasse constante
- Elle est utilisée dans les exemples et pour indiquer du code inséré dans du texte normal. Les valeurs sont écrites en chasse constante entre guillemets (« »), qui bien sûr ne font pas partie de la valeur.
Chasse constante en gras
- Elle est utilisée pour les options de commande, ce qui permet de distinguer entre l'option avertissement -w et l'opérateur -w pour le test d'un fichier. Elle est aussi utilisée pour le texte que vous entrez littéralement.
Chasse constante en italique
- Elle est utilisée pour des termes génériques auxquels vous devez substituer vos valeurs personnelles.
Nous listons beaucoup d'exemples qui sont pour la plupart des bouts de code qui peuvent s'intégrer dans une application plus large. Certains exemples sont des programmes complets et que vous pouvez reconnaître avec l'en-tête de début de ligne #!
. Les programmes les plus importants commencent par :
#!/usr/bin/Perl
D'autres programmes doivent aussi être entrés en ligne de commande. Nous avons utilisé le symbole % pour indiquer un prompteur shell :
%
Perl -
e `print "Hello, world.\n"`
Hello, world.
Ce style représentatif d'une ligne de commande Unix où les simples guillemets représentent la forme la plus « quotée ». La quotation, ainsi que les caractères généraux (wildcards), varient d'un système à l'autre. Par exemple beaucoup d'interpréteurs de ligne de commande sous MS DOS et VMS nécessitent la double quotation en lieu et place des simples guillemets lorsqu'il est nécessaire de grouper les arguments avec des espaces ou des caractères généraux de remplacement.
Remerciements▲
Nous voulons remercier ici publiquement nos relecteurs pour leur patience dans l'édition de cet ouvrage : Todd Miller, Sharon Hopkins Rauenzahn, Rich Rauenzahn, Paul Marquess, Paul Grassie, Nathan Torkington, Johan Vromans, Jeff Haemer, Gurusamy Sarathy, Gloria Wall, Dan Sugalski et Abigail.
Nous voulons remercier tout particulièrement Tim O'Reilly (et ses associés) d'encourager les auteurs à faire un effort spécial pour rendre leurs livres agréables à lire.