PERL

Section: User Contributed Perl Documentation (1)
Updated: 1999-10-19
Index Retour au Menu Principal

 

NOM

perl - Langage pratique d'extraction et de rapport (Practical Extraction and Report Language)  

SYNOPSIS

perl-sTuU ]
  [ -hv ] [ -V[:configvar] ]
  [ -cw ] [ -d[:debugger] ] [ -D[number/list] ]
  [ -pna ] [ -Fpattern ] [ -l[octal] ] [ -0[octal] ]
  [ -Idir ] [ -m[-]module ] [ -M[-]'module...' ]
  [ -P ]
  [ -S ]
  [ -x[dir] ]
  [ -i[extension] ]
  [ -e 'command' ] [ -- ] [ programfile ] [ argument ]...

Pour en simplifier l'accès, le manuel Perl a été scindé en plusieurs sections :

    perl           Vue d'ensemble (cette section)
    perldelta      Changements par rapport à la version précédente
    perlfaq        Les questions souvent posées (Foire Aux Questions)
    perltoc        Table des matières de la documentation Perl

    perldata       Structures de données
    perlsyn        Syntaxe 
    perlop         Opérateurs et précédence 
    perlre         Expressions régulières
    perlrun        Invocation de Perl et ses arguments
    perlfunc       Fonctions prédéfinies de Perl 
    perlvar        Variables prédéfinies en Perl
    perlsub        Utilisation des sous-programmes
    perlmod        Modules Perl : comment ça marche 
    perlmodlib     Modules Perl : comment en créer et les utiliser
    perlmodinstall Modules Perl : comment les installer à partir du CPAN
    perlform       Utilisation des formats
    perllocale     Support des définitions locales

    perlref        Références en Perl 
    perldsc        Introduction aux structures de données en Perl 
    perllol        Structures de données en Perl : listes de listes
    perltoot       Programmation orientée objet en Perl : apprentissage
    perlobj        Objets en Perl
    perltie        Objets cachés derrière de simples variables
    perlbot        Programmation orientée objet : astuces et exemples
    perlipc        Communication interprocessus

    perldebug      Debugger en Perl 
    perldiag       Messages de diagnostic de Perl
    perlsec        Perl et la sécurité
    perltrap       Pièges de Perl pour les imprudents
    perlport       Guide de portabilité Perl 
    perlstyle      Guide de style Perl

    perlpod        Format des documentations Perl
    perlbook       Livres parlant de Perl

    perlembed      Utiliser Perl dans vos programmes en C ou C++
    perlapio       Interface d'abstraction des E/S internes à Perl
    perlxs         Interface de programmation des extensions à Perl
    perlxstut      Perl XS : Apprentissage 
    perlguts       Fonctions internes pour les créateurs d'extensions
    perlcall       Convention de nommage des fonctions Perl en C

    perlhist       Le glorieux passé de Perl

(Si vous essayez de lire l'ensemble des sections d'une traite, l'ordre indiqué tendra à réduire le nombre de référence en avant.)

Par défaut, toutes les sections citées précédement sont installées dans le répertoire /usr/local/man/fr/.

De la documentation supplémentaire sur les modules Perl est disponible. Par défaut, elle est installée dans le répertoire /usr/local/lib/perl5/man ou dans le sous-répertoire man du répertoire de bibliothèque Perl. Certains de ces documents supplémentaires sont livrés en standard avec Perl, mais vous y trouverez aussi la documentation des modules provenant d'autres sources.

Vous devez être en mesure de lire la documentation perl avec la commande man(1) en ajoutant le répertoire man dans le fichier de démarrage adéquat, ou en modifiant la variable d'environnement MANPATH. Pour savoir où sont installées les pages de manuel, tapez :

    perl -V:man.dir

Si les répertoires ont un ancêtre commun, par exemple /usr/local/man/man1 et /usr/local/man/man3, il suffit d'ajouter cet ancêtre (/usr/local/man) dans le fichier de configuration de man(1) ou dans la variable MANPATH. Si ce n'est pas le cas, vous devrez alors tous les ajouter.

Si ça ne marche pas pour une raison quelconque, vous pouvez toujours utiliser le script perldoc fourni pour lire les documentations des modules. Vous pourriez aussi chercher un programme de remplacement à man(1).

Si votre programme a un comportement étrange et que vous ne savez pas où se trouve le problème, pour demander à Perl de vous aider, utilisez l'option -w. Très souvent Perl vous indiquera l'endroit exact où se trouve le problème.  

DESCRIPTION

Perl est un langage optimisé pour extraire des informations de fichiers texte et imprimer des rapports basés sur ces informations. C'est aussi un bon langage pour de nombreuses tâches d'administration système. Il est écrit dans le but d'être pratique (simple à utiliser, efficace, complet) plutôt que beau (petit, élégant, minimaliste).

Le Perl combine (du point de vue de l'auteur) les meilleures fonctionnalités de C, sed, awk et sh, de telle manière que les personnes familiarisées à ces langages ne devraient avoir aucune difficulté avec celui-ci. (Les historiens pourront noter quelques vestiges de csh, Pascal, et même de BASIC-PLUS). La syntaxe se rapproche presque totalement de celle du C. Contrairement à la plupart des utilitaires Unix, Perl ne limite pas arbitrairement la taille des données --- si vous avez assez de mémoire, Perl peut remplir une chaine de caractères avec le contenu total d'un fichier. Il n'y a pas de niveau maximum à la récursivité. Et les tables utilisées par les tableaux de hachage (anciennement appellé ``tableaux associatifs'') croissent dès que nécessaire afin de garantir un bon niveau de performance. Perl utilise des techniques sophistiquées de recherche de motif pour pouvoir traiter très rapidement de très grandes quantités de données. Bien qu'optimisé pour le traitement des fichiers textes, Perl peut aussi traiter des données binaires, et faire que des fichiers dbm soient vus commes des tableaux de hachage. Les scripts Perl ayant leurs setuid bits positionnés sont plus sûrs que des programmes C grâce à des mécanismes de suivi de flot de données qui permettent d'éviter de nombreux trous de securité particulièrement stupides.

Si vous avez un problème pour lequel vous auriez utilisé sed, awk ou sh, mais qui dépasse leurs capacités ou qui doit fonctionner un peu plus rapidement et que vous ne voulez pas l'écrire en C, alors le Perl est pour vous. Il existe aussi des convertisseurs pouvant transformer vos scripts sed et awk en scripts Perl.

Mais il y a beaucoup plus...

La version 5 de Perl constitue une réécriture presque complète, et introduit les fonctionnalités suivantes :

* De nombreuses améliorations à l'utilisation
Il est maintenant possible d'écrire du code Perl nettement plus lisible (même dans les expressions régulières). Les variables absconses peuvent être remplacées par des identificateurs plus compréhensibles. Les messages d'erreurs sont plus détaillés, et les messages optionnels d'avertissement devraient indiquer une grande majorité des erreurs peuvant être commises par un novice. On ne le dira jamais assez, mais lorsque vous obtenez un comportement erratique, essayez de lancer votre script avec le modificateur -w !!! De toutes manières, même si vous n'avez pas de comportement erratique, essayez d'utiliser le modificateur -w.
* Une grammaire simplifiée
La taille de la nouvelle grammaire yacc fait environ la moitié de la précédente. Un très grand nombre de règles arbitraires ont été régularisées. Le nombre des mots réservés a été réduit de plus de 2/3. Malgré cel, presque tous les anciens scripts Perl fonctionnent sans aucun changement.
* Portée lexicale
Les variables Perl peuvent maintenant être déclarées à l'intérieur d'une portée lexicale, de la même manière que les variables ``auto'' en C. Non seulement, c'est plus efficace, mais ça contribue à une plus grande sécurité pour la programmation de code réutilisable. Les routines anonymes disposent ainsi d'un couplage fort des variables locales.
* Structure de données performantes
N'importe quelle variable scalaire, y compris un élément de tableau, peut maintenant contenir une référence vers une autre variable ou une routine. Il devient simple de créer des variables et routines anonymes. Perl gère pour vous les compteurs de référence.
* Modularité et réutilisabilité
La bibliothèque Perl est maintenant constituée de modules qui peuvent être partagés facilement entre plusieurs paquetages. Un paquetage peut choisir d'importer tout ou parties de l'interface publiée d'un module. Les pragmas (directives de compilation) sont définis et utilisés par le même mécanisme.
* Programmation orientée objet
Un paquetage peut fonctionner comme un classe. L'héritage multiple dynamique et les méthodes virtuelles sont supportées de manière très directe et n'introduisent que peu de changements syntaxiques. Les descripteurs de fichiers sont maintenant gérés comme des objets.
* Intégrable et extensible
Perl peut maintenant être intégré simplement dans vos applications en C ou C++, et peut indifférement appeler ou être appelé par vos routines à travers une interface documentée. Le préprocesseur XS fourni facilite l'intégration de routines en C ou C++ dans une application Perl. Le chargement dynamique de module est supporté, et Perl lui-même peut être transformé en une librairie dynamique.
* Conforme POSIX
Un apport majeur est la création du module POSIX, qui fournit l'accès à toutes les routines et définitions POSIX, au travers de classes d'objets lorsque c'est approprié.
* Constructeurs et destructeurs de paquetage
Les nouveaux blocs BEGIN et END sont exécutés lorsque la compilation du paquetage s'achève et juste à la sortie du programme. Ils peuvent être utilisés dans un mode dégradé correspondant à celui du awk en utilisant les modificateurs -p ou -n.
* De multiples implémentations de DBM en simultané
Un script Perl peut maintenant accéder à des fichiers DBM, NDBM, SDBM, GDBM et Berkeley DB simultanément. En fait, l'ancienne interface dbmopen a été généralisée pour permettre à n'importe quelle variable d'être rattachée à une classe d'objet définissant ses propres méthodes d'accès.
* Les définitions des routines peuvent desormais être chargées automatiquement
En fait, le mécanisme AUTOLOAD vous permet aussi de définir n'importe quelle sémantique arbitraire pour l'appel de routines indéfinies. Ce n'est pas seulement du chargement automatique.
* Amélioration des expressions régulières
Vous pouvez maintenant spécifier des quantificateurs qui ne soient pas avides. Il est aussi possible de faire des regroupements sans créer de références. Tout comme vous pouvez ajouter des espacements et des commentaires dans les expressions régulières. Un mécanisme conséquent permettant d'étendre les capacités des expressions régulières a été ajouté mais reste presque entièrement compatible.
* Une pléthore de modules disponibles
Le CPAN (Comprehensive Perl Archive Network ou Réseau d'archives détaillées de Perl) décrit dans la page de manuel perlmodlib contient des centaines de modules prêts à l'emploi fournissant une quantité astronomique de code réutilisable. Vous trouverez le site miroir le plus proche de chez vous à l'adresse : http://www.perl.com/CPAN.
* Compilateur
Bien qu'il ne soit pas encore en production, il existe un compilateur Perl-vers-C qui fonctionne. Il peut générer un byte code (code objet) portable, du simple C ou bien du code C optimisé.

D'accord, j'en fini avec le battage publicitaire de Perl.  

ENVIRONNEMENT

Voir perlrun.  

AUTEUR

Larry Wall <larry@wall.org>, aidé par des tas d'autres personnes.

Si vous désirez faire partager votre témoignage sur les succès remportés en utilisant Perl, aidant ainsi ceux qui voudraient recommander le Perl pour leurs applications, ou tout simplement si vous voulez exprimer votre gratitude à Larry et l'équipe de développement, alors écrivez s'il vous plaît à <perl-thanks@perl.org>.  

FICHIERS

 "/tmp/perl-e$$" fichier temporaire pour les commandes -e
 "@INC"          emplacements des librairies Perl

 

VOIR AUSSI

 a2p  traducteur awk vers perl

 s2p  traducteur sed vers perl

 

DIAGNOSTICS

Le modificateur -w génère de magnifiques diagnostics.

Voir perldiag pour l'explication de tous ces diagnostics. Le pragma "use diagnostics" oblige Perl à rendre ces messages plus verbeux.

En cas d'erreur de compilation le numéro de la ligne fautive est indiqué ainsi que l'emplacement approximatif du mot concerné. (Dans le cas de script utilisant le modificateur -e, chaque -e est compté comme une ligne.)

Les scripts en setuid ont des contraintes supplémentaires pouvant produire des messages d'erreur tel que ``Insecure dependency''. Voir perlsec.

Avons-nous mentionné que vous devriez vraiment penser à utiliser le modificateur -w ?  

BUGS

Le modificateur -w n'est pas obligatoire.

Perl est à la merci de la définition de plusieurs opérations telles que casting, atof(), et affichage des nombres flottants par sprintf() qui peuvent être différentes sur votre machine.

Si votre stdio nécessite un déplacement(seek) ou une fin de fichier(eof) entre les lectures et les écritures sur des flots de données particuliers, alors Perl les requiert aussi. (Ceci ne s'applique pas à sysread() et syswrite().)

Il n'y a aucune limite en ce qui concerne la taille des types de données prédéfinies (à part la mémoire disponible) mais il existe toujours un petit nombre de limites arbitraires : un nom de variable ne peut dépasser 255 caractères, aucun composant de votre PATH ne doit être plus long que 255 caractères si vous utilisez le modificateur -S. Une expression régulière ne peut dépasser 32 767 octets lors de sa compilation.

Si vous envoyez un rapport de bug (assurez-vous d'inclure toutes les informations sur la configuration obtenue par le programme myconfig fourni avec Perl, ou par "perl -V") à <perlbug@perl.com>. Si vous avez réussi à compiler Perl, le script perlbug fourni dans le répertoire utils/ peut être utilisé pour envoyer un rapport de bug.

L'acronyme Perl signifie réellement Pathologically Eclectic Rubbish Lister, mais ne dites à personne que je vous ai dit ça.  

NOTES

La devise de Perl est ``Il y a toujours plus d'une façon de le faire''. Devinez exactement combien de façons est laissé en guise d'exercice pour le lecteur.

Les trois grandes vertus du programmeur sont la paresse, l'impatience et l'orgueil. Reportez-vous au livre ``Programmation en Perl'' pour savoir pourquoi.  

VERSION FRANÇAISE

Cette traduction française correspond à la version anglaise distribuée avec perl 5.00502. Pour en savoir plus concernant ces traductions, consultez http://www.enstimac.fr/Perl/ .  

TRADUCTION

Marc Carmier <carmier@immortels.frmug.org>  

RELECTURE

Pascal Ethvignot <pascal@encelade.frmug.org>



 

Index

NOM
SYNOPSIS
DESCRIPTION
ENVIRONNEMENT
AUTEUR
FICHIERS
VOIR AUSSI
DIAGNOSTICS
BUGS
NOTES
VERSION FRANÇAISE
TRADUCTION
RELECTURE


Time: 18:58:22 GMT, December 19, 2004