Par : Philippe Bancquart PERL Mise à jour du 07/08/2005 Par : Philippe Bancquart
Objectifs Présentation et utilisation du langage PERL Initiation à ce langage Sommaire Présentation Son utilisation Atouts et défis d’aujourd’hui Organisation Modèle économique, création de valeur et performances Chiffres clés Success stories, exemples, satisfaction
Présentation 1 Utilisation 2 Partie 2 : les atouts et les défis d ’aujourd ’hui 3 Partie 3 : l ’organisation 4 Partie 4 : modèle économique, création de valeur et performances 5 Partie 5 : chiffres clés 6 Partie 6 : success stories, exemples, satisfaction
Présentation Qu’est ce que Perl ? P.E.R.L. signifie Practical Extraction and Report Lang Un langage de programmation, logiciel gratuit Un langage interprété, pas de compilation Chaque « script » nécessite d'avoir l'interpréteur Perl sur la machine pour s'exécuter. Portabilité : Perl existe sur la plupart des plateformes (Unix, NT, Windows, Mac,VMS, ...) Nombreuses librairies et utilitaires Simplicité et robustesse
Utilisation Manipuler des fichiers (notamment pour gérer plusieurs fichiers en même temps), Manipuler des textes (recherche, substitution), Manipuler des processus (notamment à travers le réseau). Générer, mettre à jour, analyser des fichiers HTML (CGI), Accès « universel » aux bases de données, Conversion de formats de fichiers. Ne pas utiliser pour interfaces interactives, calcul scientifiques, Perl n’est plus lié au monde UNIX
Synthèse Les variables commencent par $ on ne s’occupe pas du type. Les listes commencent par @ @alphabet = ('a'..'z'); Les deux points signifient de "tant à tant" affectation @ch = @chiffres; on fait référence à un élément du tableau selon son indice par : $chiffres[1] $fruits[0] premier My $mon_fruit_prefere = 'kiwi'; my $prixkiwiKilo = 12; $prix = $prixkiwiKilo * 0.1 ; my $chaine = "100 grammes de $mon_fruit_prefere vaut $prix Euros"; print $chaine ; @chiffres = (1,2,3,4,5,6); @fruits = ('amande','fraise','cerise'); @alphabet = ('a'..'f'); @ch = @chiffres; print @alphabet, '_', @ch;
Type de données. Nombre, classique , exemple 1.1 +, - ,* , /, ** (puissance), % (modulo) < , > , <= , >= , == ( égalité) != (différence) chaine ’Bonjour’ ’L\’´ecole’ le \ devant ’ pour l’apostrophe ’c:\\windows\\system’ antislash doublées ’’ chaˆıne vide ’Bonjour \n’ le \n n’a pas de sens ici utiliser une double quote pour être interprété
Exemple de fichier Un commentaire Un message de bienvenu Création d’une variable $monFichier et on affecte le nom du fichier Vérification que le fichier existe. Die : gestion des erreurs et affichage du code. Variable compteur, pas de gestion des types Ouverture du fichier contenu dans la variable, F est l’identifiant pour le repérer. || si erreur alors affichage Tant que pas la fin fichier, lecture ligne à ligne rangement dans la variable $ligne Affichage de la variable ligne Incrémentation compteur Affichage message avec texte et variables mélangées le point fait concaténation. Fermeture fichier # mon premier script print "bonjour"; my $monFichier="testcpi.pl"; if (!-e $monFichier) { my $error = $!; } my $i; open (F, $monFichier) || die "Problème d'ouverture : $!" ; while (my $ligne = <F>) { print $ligne; $i++; } print "Nombre de lignes : $i pour le fichier .$monFichier"; close F;
Présentation 1 Partie 1 : historique 2 Partie 2 : les atouts et les défis d’aujourd’hui 3 Partie 3 : l ’organisation 4 Partie 4 : modèle économique, création de valeur et performances 5 Partie 5 : chiffres clés 6 Partie 6 : success stories, exemples, satisfaction
1 PERL : FICHIERS Pour écrire un fichier open(FILEHANDLE,">>nomdufichier"); print FILEHANDLE "Nom: ",$html->param('nom'),"\n"; print FILEHANDLE "--------------------------------------------------\n"; close FILEHANDLE; Ouverture en lecture : open(FILEHANDLE,"<nomdefichier"); @lignes = <FILEHANDLE>;
Exercices Fichiers Nous avons une structure XML et un fichier avec des données. L’objectif est de mettre les données dans les tags XML. Fichier structure <nom> ^comment NOM </nom> Fichier données ^comment NOM : Philippe
FICHIERS L'ouverture consiste à associer un descripteur de fichier (filehandle) à un fichier physique. open (FIC1,’monfichier’); # ouverture en lecture open (FIC2,'c:\\tmp\\truc’); # open (FIC3,’>toto’); # > pour ouverture en écriture open (FIC3,’>>titi’); # >> pour ouverture en ajout Vérification que tour se passe bien. On peut utiliser un die conditionnel pour traiter les valeurs de retour de open : open(FIC,’MonFichier’) || die("Pb d’ouverture\n"); Close(FIC);
Lecture Fichier Pour parcourir l’ensemble du fichier, rangement dans $_ open (F, $fichier) || die "Problème pour ouvrir $fichier: $!"; while (my $ligne = <F>) { print $ligne; } close F; On range dans une variable $ligne = <FENT>; $reponse = <STDIN>; => lecture d'une ligne à l'écran La fin de ligne (retour-chariot) est lue également. Pour enlever cette fin de ligne il suffit d'utiliser la commande chop, chomp ou son équivalent : chomp On peut lire toutes les lignes d'un fichier dans un tableau (en une seule instruction) @lignes = <FENT>;
Lecture standard On effecture la lecture de l’entrée, et affiche le nombre de ligne. On peut avoir plusieurs fichiers en entrées. Lire les lignes fichier e1 puis le e2 On peut tout lire en 1 instruction @lignes = <FILEHANDLE>; Ainsi $ligne[0] sera la première ligne, $ligne[1] sera la deuxième etc... my $i=0; while (my $ligne = <>){ $i++; } print "nb $i " @ARGV = ("e1.txt","e2.txt"); while ($ligne = <>){ print("$ligne"); }
Ensuite vous pouvez remplir le fichier avec vos variables et texte On peut utiliser également sprintf avec les normes du C open(FILEHANDLE,">>nomdufichier"); print FILEHANDLE "Nom: "$var \n"; print FILEHANDLE "-----------------\n";