Cours gratuits » Cours informatique » Cours programmation » Cours Perl » Outils de base pour apprendre a programmer avec Perl

Outils de base pour apprendre a programmer avec Perl

Problème à signaler:

Télécharger



★★★★★★★★★★3.5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Outils de base pour apprendre à programmer avec Perl

I - Qu'est ce que Perl ?

Perl est un langage de programmation conçu par Larry Wall dont la première version date de 1987. Ce langage de programmation a été créé dans l'optique d'être un intermédiaire entre le langage C et les langages de scripts comme bash. Au premier, il emprunte la syntaxe et au second la simplicité.

Perl est idéal pour :

  • l'administration système ;
  • la manipulation de texte (mail, logs..) ;
8pt;">la création d'interfaces graphiques simples ;
  • faire l'interface avec un système de gestion de base de données (MySQL, Oracle, PostGreSQL...) ;
  • l'automatisation de tâches répétitives ;
  • la programmation Web, avec des modules CGI ;
  • et bien d'autres choses encore !
  • Cerise sur le gâteau, Perl est multi-plateforme ! Que vous travaillez sur un Unixoïde (Linux, BSD, Solaris, Mac...) ou un Windows, votre script Perl tournera sans aucune modification sur tous ces systèmes. Au niveau technique, Perl présente les avantages suivants :

    • gestion automatique de la mémoire (système de Garbage Collector) ;
    • manipulation aisée de données hétérogènes : tableau, chaîne de caractères, table de hachage, référence, et le plus important, tout cela combiné !
    • gestion native des expressions régulières ou regex ;
    • plus de 20000 modules disponibles sur le site du CPAN.

    Pour finir cette présentation, je ne peux m'empêcher de vous donner le slogan de Perl, qui témoigne bien de son état d'esprit : There Is More Than One Way To Do It (il y a plus d'une façon de le faire).

    II - Quels sont les outils dont j'ai besoin ?

    II-A - L'éditeur de texte

    Pour débuter en Perl, la première chose est de disposer d'un bon éditeur de texte, qui permettra notamment de mettre en couleur vos codes.

    Sous Windows, je conseille Notepad++, qui est un logiciel libre souvent mis à jour et qui offre beaucoup de possibilités tout en restant simple à utiliser.

    Sous Linux, si vous n'aimez pas les éditeurs comme vim ou emacs qui se basent surtout sur la ligne de commande, je vous conseille l'excellent SciTe. On notera qu'il est également disponible sous Windows.

    Sous Mac, un excellent éditeur en français est Smultron, aujourd'hui remplacé par l'éditeur Fraise.

    Notez bien que les logiciels proposés ne sont pas les seuls, loin de là. Si vous avez déjà un éditeur favori qui gère la coloration syntaxique, utilisez-le !

    II-B - Perl

    Une fois votre éditeur configuré, attaquons-nous au principal : Perl lui-même ! Si vous êtes sous Linux ou Mac, réjouissez-vous : il y a 95% de chance pour que Perl soit déjà présent sur votre système ! Si vous n'en êtes pas sûr, lancez une console et tapez « perl -v ». Si Perl est installé, la commande affichera la version présente sur le système. Si Perl n'est pas installé, deux écoles : le recompiler vous-même (les sources sont disponibles sur perl.com) ou suivre les instructions pour télécharger et installer ActivePerl, disponible sur le site d' ActiveState dans la section ActivePerl. Sous Windows, choisissez le fichier MSI, sous Mac le DMG et sous Linux le .DEB ou le .RPM.

    Copyright ® 2008 François Lieuze. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

    Bien débuter en Perl par François Lieuze

    II-C - Test de fonctionnement

    Ouvrez votre éditeur, choisissez le langage Perl dans les choix de coloration syntaxique et tapez le code suivant :

    #! /usr/bin/perl -w use strict; use warnings;

    print "Hello World !\n";

    Enregistrez ce code sous le nom de test.pl (les fichiers Perl ont une extension .pl ou .pm pour les modules). Rendez ce programme exécutable (chmod +x test.pl).

    Ensuite, lancez une console ou invite de commande, placez-vous dans le répertoire où vous avez enregistré le fichier (à l'aide de la commande cd) et tapez : perl test.pl

    Normalement, le texte Hello World ! devrait s'afficher à l'écran. Félicitations ! Vous venez de faire votre premier programme avec Perl !

    III - Quelles sont les ressources disponibles pour apprendre le langage Perl ?

    III-A - Les cours en ligne

    Maintenant que vous disposez de tous les outils nécessaires pour faire du Perl, il est temps d'apprendre le langage. Avant de vous acheter un livre sur le sujet, vous préfèrerez peut-être suivre un cours d'introduction à Perl en ligne et gratuit. Là encore, deux écoles :

    • si vous voulez rapidement être opérationnel sans aborder certaines subtilités, je vous conseille Formez-vous rapidement à Perl, partie 1 2 et 3, de David Bourgais ;
    • si vous souhaitez une introduction plus complète au langage Perl, Sylvain Lhullier a rédigé une excellente Introduction à la programmation en Perl, que vous pouvez suivre même si vous n'avez aucune connaissance en programmation.

    Une fois ces cours assimilés, tous nos cours sont disponibles sur http://perl.developpez.com/cours/.

    III-B - Les livres

    Ça y est, vous avez appris le langage Perl et bien évidemment vous en êtes tombé amoureux ! Vous avez décidé d'acheter un livre, mais vous ne savez pas lequel ! Il se trouve qu'Oreilly propose deux excellents livres sur le sujet, très complémentaires :

    • Introduction à Perl de Schwartz Randal, Phoenix Tom et Foy Briab. C'est le livre idéal si vous êtes débutant ;
    • Programmation en Perl, de Larry Wall, Tom Christiansen et Jon Orwant. Ce livre (surnommé Camel Book) est l'ouvrage de référence sur Perl, à posséder absolument !

    III-C - Pour aller plus loin

    Copyright ® 2008 François Lieuze. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

    Bien débuter en Perl par François Lieuze

    IV - J'ai un problème, aidez-moi !

    Pas de panique, le club des développeurs est là pour vous aider.

    Tout d'abord, pensez bien à regarder dans la documentation officielle pour vérifier si votre problème n'est pas déjà abordé. Tapez perldoc -h dans une console et laissez-vous guider !

    Vous n'arrivez toujours pas à régler votre problème ? C'est le moment d'utiliser notre FAQ de plus de 150 questions, avec moteur de recherche intégré !

    Le problème persiste ? Visitez notre forum et posez votre question !

    ..

    Voilà, ce guide touche à sa fin ! J'espère qu'il vous aura aidé à faire vos premiers pas en Perl et qu'il aura suscité votre intérêt pour ce merveilleux langage !

    . Les expressions régulières

    Perl est très adapté au traitement des chaînes de caractères car il permet de spécifier des masques qui peuvent être utilisés pour rechercher des occurrences de séquences de caractères qui leurs correspondent. Les masques sont appelés expressions régulières, ils sont familiers des utilisateurs des commandes Unix telles que ed, sed, awk ...

    7.1 L'opérateur de recherche d'occurrences d'expressions régulières

    En plaçant une expression régulière entre slashs (/ expr /), on recherche son existence éventuelle dans la variable $_ (de la gauche vers la droite). L'opérateur de recherche retourne vrai si l'expression régulière trouve une correspondance (et retourne faux dans le cas contraire). De plus l'opérateur de recherche s'il retourne vrai positionne les variables suivantes :

    $& contient le sous ensemble de $_ qui correspond à l'expression régulière ;

    $` contient le sous ensemble de $_ qui se trouve avant $& ;

    $' contient le sous ensemble de $_ qui se trouve après $&.

    $_ = "Il fait beau";

    if (/fait/) {

        print ($&,$',$`,"\n"); # <==> $& = 'fait', $`='Il '

                               # <==> $' = ' beau'

      }                                           

    7.1.1 Recherche sur une variable quelconque

    Lorsque la variable à osculter n'est pas $_, on utilise l'opérateur =~ :

    $var = "Il fait beau";

    if ($var =~ /fait/)

      {

        print ($&,$',$`,"\n"); #  <==> $& = 'fait', $`='Il '

                               #  <==> $' = ' beau'

      }

    7.2 Construction des expressions régulières

    7.2.1 Les sélecteurs de caractères

    Des sélecteurs de caractères sont utilisés pour construire les expressions régulières. Les plus simples recherchent l'existence d'un caractère, ils peuvent être répétés pour construire des expressions plus compliquées :

    .         recherche n'importe quel caractère (sauf le

              changement de ligne)

    [abc]     recherche un caractère parmi ceux situés entre

              les accolades (classe de caractères)

    [^abc]    recherche un caractère qui ne soit pas un de ceux

              situés entre les accolades

    [a-z]     recherche un caractère dont le code ASCII est

              situé entre le 1er et le 2ème caractère cité

    ab.[a-z]  dans cet exemple, on recherche un a, suivi d'un b,

              suivi d'un caractère quelconque, suivi d'une

              lettre minuscule

     Il existe des classes de caractères prédéfinies :

     (\d) correspond à un chiffre donc à [0-9] ;

    (\w) correspond à une lettre (plus le caractère souligné !) donc à [a-zA-Z0-9_] ;

    (\s) correspond aux caractères de séparation usuels (espace, tabulation, retour charriot, nouvelle ligne, saut de page).

    Ces 3 classes de caractères ont une construction négative ,  ,  signifiant respectivement [$\wedge$0-9], [$\wedge$a-zA-Z0-9_] et [$\wedge$

    7.2.2 Les multiplicateurs de sélecteurs

    Des multiplicateurs peuvent être utilisés pour spécifier les expressions régulières :

    * indique 0 ou plus de caractères identiques à celui placé à gauche ;

    + indique 1 ou plus de caractères identiques à celui placé à gauche ;

    ? indique 0 ou 1 caractère identique à celui placé à gauche.

    chaîne source     expr. reg     V/F      contenu de $&

    =============    ===========   =====    ===============

    'xxxF'               x?          V             x

    'xxxF'               x*          V            xxx

    "n'importe quoi"     .*          V      "n'importe quoi"

    'abcdefg'            a.+d        V           'abcd'

    'aabbbcdde'          a+b+        V           'aabbb'

    'aabbbcdde'          a+c         F                                        

    Il faut manipuler avec précaution le multiplicateur * car il signifie 0 ou n occurrences (0 inclus évidemment) et de plus, comme le multiplicateur +, il est glouton, c'est à dire que s'il y a correspondance, il retournera la plus longue chaîne possible.

    chaîne source     expr. reg     V/F      contenu de $&

    =============    ===========   =====    ===============

    'xxxF'               x*          V            xxx

    'abcxxxF'            x*          V        chaîne vide

    'abcxxxF'           abcx*        V           abcxxx                                               

    Dans l'exemple ci-dessus, la chaîne est parcourue de la gauche vers la droite, dans le premier cas l'opérateur glouton retourne xxx, dans le second cas il retourne 0x (donc une chaîne vide), le fonctionnement du 3ème cas est analogue au premier.

    Pour inhiber le fonctionnement glouton d'un multiplicateur, on le fait suivre d'un   ? qui signifie : le nombre minimum de caractères correspondant au sélecteur.

    chaîne source     expr. reg     V/F      contenu de $&

    =============    ===========   =====    ===============

    'xxalloallo '      a.*o          V         'alloallo'

    'xxalloallo '      a.*?o         V         'allo'

    'xyzaaaxyz'        xyza*         V         'xyzaaa'

    'xyzaaaxyz'        xyza*?        V         'xyz'

    7.2.3 Mise en mémoire d'une sélection partielle

    Il est possible dans une même expression régulière d'utiliser comme sélecteur le résultat d'une sélection déjà effectuée, elle est mise en mémoire et numérotée au préalable par l'opérateur (). L'opérateur numéro sert à référencer une mise en mémoire :

    if (/<(.*)>.*<\/\1>/) printf ("balise : $& \n");

    L'exemple ci-dessus7.1 peut servir à rechercher certaines balises d'un texte HTML. Les parenthèses autour du premier .* indiquent qu'il faut stocker le résultat de la sélection, le

         '<H1> xxxx </H1>' ou '<EM> xxxxx </EM>'

          correspondent à l'expression régulière

          donnée ci-dessus, mais

         '<A HREF="xxxx"> ancre </A>' ne le fait pas !

     L'opérateur () est également utilisé pour appliquer un multiplicateur au résultat d'une sélection :

    if (/ab(cde)+/) {

       # vrai pour abcde, abcdecde, abcdecdecde, ...

       # le multiplicateur + s'applique au résultat de

       # la sélection entre parenthèses.

    }

     7.2.4 La sélection alternative

    L'opérateur $\vert$ est utilisé pour marquer une sélection avec alternative :

    /abc|def/ sélectionne des chaînes de caractères contenant  consécutivement les caractères abc ou def

     7.2.5 Balisage des frontières de sélection

    Des opérateurs particuliers permettent de spécifier des frontières auquelles s'appliquent les sélecteurs :

     indique que le sélecteur précédent ne s'applique que sur une frontière de mot ;

      indique que le sélecteur précédent ne s'applique pas sur une frontière de mot ;

     $\wedge$ marque le début d'une ligne ;

    $ marque la fin d'une ligne.

    sélection d'un nombre exact d'occurrences

    Il est possible de sélectionner un nombre exact d'occurrences en utilisant l'opérateur {} :

    /\d{1,5}/    recherche un nombre composé de 1 à 5 chiffres

                 (au moins 1  et au plus 5)

    /x{3}/       recherche exactement 3 x

    /x{3,}       recherche une suite d'au moins 3 x (la borne

                 supérieure n'est pas précisée)

    7.2.7 Priorité des opérateurs de construction d'expressions régulières

    Comme pour rédaction d'expressions arithmétiques, il peut y avoir des ambiguités dans l'écriture des expressions régulières :

     [a-z]|[A-Z]+   veut il dire 1 ou n occurrences d'une lettre minuscule ou d'une lettre majuscule  ou plutôt  une lettre minuscule ou 1 ou n occurrences d'une lettre majuscule

     Des règles de priorités existent, en en tenant compte dans l'exemple ci-dessus, on a programmé le deuxième cas (le $\vert$ est moins prioritaire que le plus). Pour éviter de connaître précisemment les règles de priorités des opérateurs, il suffit de noter que l'opérateur () est le plus prioritaire, pour programmer à coup sûr le cas numéro 1, on pourrait écrire :

     ([a-z]|[A-Z])+   <==> la mise entre parenthèses de  l'alternative assure qu'elle sera prioritaire sur le +

    L'opérateur de substitution

    Pour effectuer des substitutions correspondant à des expressions régulières, on utilise l'opérateur s/expr-reg/chaine/, qui par défaut utilise et affecte la variable $_.

    $_ = '123456789';

    s/123/abc/;               <==> $_ = 'abc456789'

    $var = 'abctotototodef'; 

    $var =~ s/(to)+//;        <==> $var = 'abcdef'

     Les variables $&, $' et $` conservent le même sens qu'avec l'opérateur de recherche, la chaîne supprimée est contenue dans $& ...

    Lorsque la chaîne à traiter n'est pas contenue dans la variable $_, on utilise l'opérateur de recherche =~ qui combiné avec l'opérateur de substitution, utilise et affecte la variable citée.

    L'opérateur de substitution s'arrête sur la première occurrence de la chaîne correspondant à l'expression régulière donnée. Pour effectuer une substitution de toutes les occurrences, il convient de l'indiquer en rajoutant un g (global) derrière le dernier / de l'opérateur de substitution :

    $var = 'aa123aaa456aaaa789';

    $var =~ s/a+/ /g;        <==> $var = ' 123 456 789'


    47