CSI 3525, Automne 2001 Une introduction au Perl Preparee par Stan Szpakowicz, base sur ces sources et inspirations:

Slides:



Advertisements
Présentations similaires
Prmt For imbriqués.
Advertisements

Langage de manipulation de données Ensemble de commandes permettant : – modifier la base : ajout, modification et suppression – interroger la base ex :
Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour.
Introduction au langage C
Conception de Site Webs dynamiques Cours 5
Algorithmes et structures de données avancées Partie Conception de Sites Web dynamiques Cours 9 Patrick Reuter.
Algorithmes et structures de données avancées Partie Conception de Sites Web dynamiques Cours 8 Patrick Reuter.
Intiation python, avril 2003 introduction Présenter Python –simplicité –utilisation pratiques Conserver cette info en ligne Susciter des échanges à lIrcam.
UNIX Pour débutant. Applications En directNavigateurCourrierMode consoleFenêtrage http smtp ssh X protocoles - langages de programmation protocoles -
Programmation Tcl/Tk Raymond Ripp février 2010 Survol général o Applications et Protocoles o Windows Linux o Disques Processeurs o Passage en mode console.
Programmation Tcl/Tk Raymond Ripp février 2011 Survol général o Applications et Protocoles o Windows Linux o Disques Processeurs o Passage en mode console.
12/10/2000Cédric Bertho - Comparaison entre Perl et Python1 vs Comparaison.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Bioinformatique et Perl
Xpath XPath is a language for finding information in an XML document.
Septembre 2001Y. Schutz - ALICE / WP6 France1 Activités GRILLE dALICE.
Objectifs Présentation et utilisation du langage PERL
Introduction : Compilation et Traduction
TP de mise en oeuvre d’une PKI avec Openssl
High Frequency Trading Introduction. Séminaires de 30 minutes, une fois par semaine (8 en tout) Sujets abordés – Définition dun algorithme et introduction.
Les lois de la réflexion et la formation d’images par les miroirs
Points importants de la semaine Les pointeurs. Les chaînes de caractères.
Les entrées /sorties en Java François Bonneville
Logistique Le Cross Docking.
Cours Visual Basic pour Application
Unix Raymond Ripp.
CPI/BTS 2 Programmation Web Introduction au PHP
CYCLE 3 : Alternatives Faire des choix dans un programme en C 1- AIGUILLAGE SIMPLE sur CONDITION : if-else 2-AIGUILLAGE MULTIPLE sur CONDITIONS if-else.
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Filtre programmable nawk(1)
Archivage et documentation des enquêtes Exemple: Enquête Nationale sur les Activit é s É conomiques ENAE.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Cours N°2 Base de Données & Langage SQL
Le patron de conception « Strategy » Simon Durocher ( )
Le langage Javascript pour le web
Perl, un langage de programmation pour les données textuelles
CSI2520, Hiver 2007 Python Un langage de programmation par scripting et plus…
1 CSI 2532 Lab5 Installation de JDBC Février 13, 2012.
Eric Laporte Institut Gaspard-Monge Université de Marne-la-Vallée France Introduction à Perl.
PHP GTK PHP…au delà du Web Paris, 28 novembre 2001 Armel FAUVEAU GLOBALIS media systems.
NOTES: R 4, R 5, R 6, & MAKE UP QUIZZES Over F 1 vocab, song. Time? Over pg orally for oral points! H/W: Study French 1 vocabulary & R4-6 for vocabulary.
Chapitre 3 Syntaxe et sémantique.
Questions abordées Aujourd’hui Qu’est-ce qu’une expression régulière ?
CSI1502 Principes fondamentaux en conception des logiciels Chapter 8: Gestion des exceptions.
CSI3525: Concepts des Langages de Programmation Notes # 6: Langages de Programmation Fonctionelle II: Introduction au ML.
Instructions de contrôle
L’essentiel du langage C
1 GPA435 Systèmes d’exploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 8 Filtres UNIX.
LANGAGE PASCAL Introduction rapide….
La Programmation CGI Principe Général Traitement des informations
PHP 1° PARTIE : LES BASES © BTS IRIS 2002 [tv] Présentation Historique
PHP & My SQL.
Shell Equipe ID Bioinformatics Training Course June 2014.
Argc et argv Utilisation des paramètres de la ligne de commande.
CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk.
 Syntaxe du langage PHP
Histoire de la programmation
Unix Raymond Ripp.
Finder => Application => Utilitaires => Terminal Editor:pico Touches –Finder=>Applic.=> Utili. => Touches –~: Alt+N –|: Shift+Alt+N –[: Shift+ Alt+5 –{:
1 INFOR 101 Chapitre 4 Marianne Morris. 2 Révision de chapitre 3 Algorithmes Sequential Search Selection Sort Binary Search Ordre de magnitude  (n) Mesurer.
1 Système d’exploitation Les scripts csh 1 ère Année Année Tienté HSU.
Initiation au JavaScript
Introduction à l’utilisation des corpus Introduction aux expressions régulières.
CSI 3525, Survol, page 1 CSI 3525 Concepts des langages de programmation.
Scripts et fonctions Instructions de contrôle
Introduction à l’utilitaire
Algorithmique Algorithmique  Pascal
Principes et variables
Initiation au langage Perl Emmanuel Grenados Corp I&T / TE September 16th, 2008.
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
Introduction au Langage Pascal
Transcription de la présentation:

CSI 3525, Automne 2001 Une introduction au Perl Preparee par Stan Szpakowicz, base sur ces sources et inspirations: Randal L. Schwartz and Tom Christiansen, Learning Perl 2 nd ed., OReilly Randal L. Schwartz and Tom Phoenix, Learning Perl 3 rd ed., OReilly Nathalie Japkowicz Go O'Reilly!

CSI 3525 Perl, page 2 Perl: Survol (1) Perl = Practical extraction and report language Perl = Pathologically eclectic rubbish lister Cest un langage puissant a usage general, qui est particulierement utile pour lecriture rapide et sans trop de principes de programmes (quick and dirty programs!) Le langage a ete invente par Larry Wall, sans excuses pour son manque delegance (!) Si vous connaissez le C et lUnix, vous pouvez apprendre Perl (ou au moins, un bon morceau de Perl ) en quelques jours.

CSI 3525 Perl, page 3 Perl: Survol (2) Dans la hierarchie des langages de programmation, Perl se trouve a mi-chemin entre les langages de haut-niveau tels que le Pascal, le C et le C++ et les scriptes de coquille (shell scripts) [les langages qui ajoute une structure de controle aux instruction de lignes de controle de lUnix] tels que sh, sed et awk. En passant, awk = Aho, Weinberger, Kernighan, et sed = Stream Editor.

CSI 3525 Perl, page 4 Les avantages du Perl (1) Le Perl combine les meilleures caracteristiques (selon ses admirateurs ) de: La programmation de la shell Unix/Linux, Des commandes sed, grep, awk et tr, C, Cobol. Les Shell scripts sont, habituellement, ecrits dans une multitude de petits fichiers qui se referencient les uns les autres. Perl atteint cette fonctionalite en utilisant un seul fichier.

CSI 3525 Perl, page 5 Les avantages du Perl (2) Le Perl offre des capabilites puissantes pour les expressions regulieres. Ceci permet des operations de prise en charge des chaines de caracteresen particulier le pattern matchingrapides, flexibles, et fiables. En consequence, le Perl est particulierement utile pour les applications de traitement de texte. En fait, cest le Perl qui a permis la transformation de documents en documents HTML au debut des annees 1990, permettant au Web son expansion si rapide.

CSI 3525 Perl, page 6 Les Desavantages du Perl Le Perl est un vrai fouillis! Il contient de nombreuses constructions provenant de nombreux langages et de nombreux outils informatique. Tres souvent, il contient differentes constructions pour une meme fonctionalite (par example, il existe au moins 5 facons dexecuter une commande if dune ligne) Ce nest pas un langage tres lisible! Vous ne pouvez pas ditribuer un programme en Perl en tant que fichier binaire opaque. Cela veut dire que vous ne pouvez pas vraiement commercialiser les produits que vous developpez en Perl.

CSI 3525 Perl, page 7 Donnees Scalaires: chaines et nombres Les scalaires nont pas besoin detre definis ou davoir leur type declare: Perl comprend a partir du context. % cat hellos.pl #!/usr/local/perl5/bin/perl -w print "Hello". " ". "world\n"; print "hi there ". 2. " worlds!"."\n"; print (("5" + 6). " eggs\n". " in ". " = ". ("3" + "2"). " baskets\n" ); % hellos.pl Hello world hi there 2 worlds! 11 eggs in = 5 baskets <-- invoke Perl

CSI 3525 Perl, page 8 Variables Scalaires Les variables scalaires debutent avec un signe de dollar. Elles nont pas besoin detre declarees. % cat scalar.pl #!/usr/local/perl5/bin/perl -w $i = 1; $j = "2"; print "$i and $j \n"; $k = $i + $j; print "$k\n"; print $i. $j. "\n"; print '$k\n'. "\n"; % scalar.pl 1 and $k\n

CSI 3525 Perl, page 9 Structures de Control: if, else, elsif % cat names.pl #!/usr/local/perl5/bin/perl -w $name = ; chomp($name); if ($name gt 'fred') { print "'$name' follows 'fred'\n";} elsif ('$name' eq 'fred') { print "both names are 'fred'\n";} else { print "'$name' precedes 'fred'\n";} % names.pl Stan 'Stan' precedes 'fred' % names.pl stan 'stan' follows 'fred' <-- my input <-- Perls' output <-- cut newline

CSI 3525 Perl, page 10 Structures de Controle: boucles (1) % cat oddsum_while.pl #!/usr/local/perl5/bin/perl -w # Add up some odd numbers $max = ; $n = 1; while ($n < $max) { $sum += $n; $n += 2; } # On to the next odd number print "The total is $sum.\n"; % oddsum_while.pl 10 Use of uninitialized value at oddnums.pl line 6, chunk 1. The total is 25. <-- my input <-- a warning <-- Perl's output

CSI 3525 Perl, page 11 Structures de Controle: boucles (2) Les commentaires commencent avec #. Vous pouvez, bien que ce ne soit pas tres elegant, utiliser une variable sans linitialiser (comme $sum ). Une telle variable sera initialisee a 0 si elle est, au depart, utilisee comme un nombre ou un si son premier usage est en tant que chaine. En fait, sa vraie valeur est toujours undef, convertie comme il le faut. Si vous le voulez, Perl peut donner des avertissements (le signal -w). Bien entendu, while est seulement lune des constructions de boucles du Perl. Continuons…

CSI 3525 Perl, page 12 Structures de Controle: boucles (3) % cat oddsum_until.pl #!/usr/local/perl5/bin/perl -w # Add up some odd numbers $max = ; $n = 1; $sum = 0; until ($n >= $max) { $sum += $n; $n += 2; } # On to the next odd number print "The total is $sum.\n"; % oddsum_until.pl 10 The total is 25.

CSI 3525 Perl, page 13 Structures de Controle: boucles (4) % cat oddsum_for.pl #!/usr/local/perl5/bin/perl -w # Add up some odd numbers $max = ; $sum = 0; for ($n = 1 ; $n < $max ; $n += 2) { $sum += $n; } print "The total is $sum.\n"; % oddsum_for.pl 10 The total is 25. Il y a aussi do-while et do-until, et on a foreach. Continuouns...

CSI 3525 Perl, page 14 Structures de Controle: boucles (5) % cat oddsum_foreach.pl #!/usr/local/perl5/bin/perl -w # Add up some odd numbers $max = ; $sum = 0; foreach $n ( (1.. $max) ) { if ( $n % 2 != 0 ) { $sum += $n; } } print "The total is $sum.\n"; % oddsum_foreach.pl 10 The total is 25.

CSI 3525 Perl, page 15 Listes et tableaux Une liste est une collection ordinee de scalaires. Un tableau est une variable contennant une liste. Chaque element est une valeur scalaire independante. Une liste peut contenir des nombres, des chaines, des valeurs undeftout melange de type est permis! Pour utiliser un element de tableau, prefixez le nom du tableau par un $; placez lindex dans des crochets. Afin daccer au tableau en entier, prefixez son nom par Vous pouvez copier un tableau dans un autre. Vous pouvez egalement utiliser les operateurs sort, reverse, push, pop, split.

CSI 3525 Perl, page 16 Exemples de Tableaux I % cat arraysort.pl #!/usr/local/perl5/bin/perl -w $i = 0; while ($k = ) { $a[$i++] = $k; } print "====== sorted ======\n"; print % arraysort.pl Nathalie Frank hello John Zebra notary nil <-- ^D here ====== sorted ====== Frank John Nathalie Zebra hello nil notary

CSI 3525 Perl, page 17 Exemples de Tableaux IIa Reversing a text file (whole lines) % cat whole_rev.pl #!/usr/local/perl5/bin/perl -w while ($k = ) { $k); } print "=== reversed ===\n"; while ($oldval = { print $oldval; } % whole_rev.pl a b c d e f g h i === reversed === g h i e f a b c d

CSI 3525 Perl, page 18 Exemples de Tableaux IIb % each_rev.pl a bc d efg efg d bc a hi j j hi klm nopq st st nopq klm Reversing each line in a text file % cat each_rev.pl #!/usr/local/perl5/bin/perl -w while($k = ) = split(/\s+/, $k); $s = ""; for ($i $i > 0; $i--) { $s = "$s$a[$i-1] "; } chop($s); print "$s\n" } output ^D

CSI 3525 Perl, page 19 Exemples de Tableaux III Reversing a text file (whole lines) print reverse( ); Reversing each line in a text file while($k = ) { $s = ""; foreach $i (reverse(split(/\s+/, $k))) { $s = "$s$i "; } chop($s); print "$s\n"; }

CSI 3525 Perl, page 20 Hashes un hash est comme un tableau, mais a la place dindices, on peut avoir nimporte quelle cle, et on utilise des accolades plutot que des crochets. Le nom officiel est tableau associatif (implemente par du hashing ). Les cles et le valeurs peuvent etre nimporte quel scalaire; Les cles sont toujours converties en chaines. Afin de referer a un hash en entier il faut prefixer son nom dun %. Si vous affectez un hash a un tableau, il devient une simple liste.

CSI 3525 Perl, page 21 Hash: exemples I (1) % cat hash_array.pl #!/usr/local/perl5/bin/perl -w %some_hash = ("foo", 35, "bar", 12.4, 2.5, "hello", "wilma", 1.72e30, "betty", = %some_hash; print foreach $key (keys %some_hash) { print "$key: "; print delete $some_hash{$key}; print "\n";}

CSI 3525 Perl, page 22 Hash: exemples I (2) % hash_array.pl betty bye wilma 1.72e+30 foo hello bar 12.4 ======== betty: bye wilma: 1.72e+30 foo: : hello bar: 12.4

CSI 3525 Perl, page 23 Hash: exemples II % cat hash_arrows.pl #!/usr/local/perl5/bin/perl -w my %hash = ( "a" => 1, "b" => 2, "c" => 3); foreach $key (sort keys %hash) { $value = $hash{$key}; print "$key => $value\n"; } % hash_arrows.pl a => 1 b => 2 c => 3

CSI 3525 Perl, page 24 Hash: exemples III: Compte de frequence de caracteres % cat frequency.pl #!/usr/local/perl5/bin/perl -w while (<>) { # loop over chars in input line for $c (split //) { # Increment $count of $c ++$count{$c}; } # end of input, print %count for $c (sort keys %count) { print "$c\t$count{$c}\n"; }

CSI 3525 Perl, page 25 Hash: exemples III: Compte de frequence de caracteres % frequency.pl Nathalie Fran hello John rather Notary F 1 J 1 ^D F 2 J 2 N 2 a 5 e 3 h 4 i 1 l 3 n 2 o 3 r 4 t 3 y 1

CSI 3525 Perl, page 26 Expressions Regulieres I Une expression reguliere (ou pattern) est un patron decrivant une classe de chaines. Une chaine peut correspondre ou ne pas correspondre a ce patron. Les patrons les plus simples sont dun seul caractere. Une class de caracteres secrit entre crochets: [ ]un chiffre octal [0-7]un chiffre octal [0-9A-F]un chiffre hex [^A-Za-z]pas une lettre [0-9-]un chiffre decimal ou un moins.

CSI 3525 Perl, page 27 Expressions Regulieres II Metacaracteres:.(dot) nimporte quel caractere sauf \n Anchors: ^le debut dune $la fin dune chaine Multiplicateurs: *repete litem precedent 0 ou plus de fois +repete litem precedent 1 ou plus de fois ?rend litem precedent optionnel {n}repete n fois {n, m}repete n a m fois (n <= m) {n,}repete n ouplus de fois

CSI 3525 Perl, page 28 Expressions Regulieres III Loperateur Booleen =~ fait correspondre une chaine a une expression reguliere, que lon ecrit entre deux barres inclinees. Les patrons peuvent etre groupes dans des parentheses (le patron en entier devient un item). Les alternatives sont denotees par la barre droite |. $x = " AGH"; if ( $x =~ /([0-9]{4}|[A-Z]{3}){2,}/ ) { print "yes1\n"; } if ( $x =~ /(0?|4)(5|[1abc]{1,})/ ) { print "yes2\n"; } Sera explique dans un moment

CSI 3525 Perl, page 29 Expressions Regulieres IV La precedence des elements dun patron: parentheses ( ) multiplicateurs * + ? {n} sequence, ancres ^ $ alternation | Certaines classes de caracteres sont predefinies: class Cnot C chiffre \d \D mot char [a-zA-Z0-9_]+ \w \W espace blanc \s \S Des ancres additionnelles: word boundary \b \B

CSI 3525 Perl, page 30 Expressions Regulieres: exemples I $i = "Jim"; Correspondence $i =~ /Jim/; oui $i =~ /J/; oui $i =~ /j/; non $i =~ /j/i; oui $i =~ /\w/; oui $i =~ /\W/; non Majuscule/Minuscule ignore si on utilise le i postfixe.

CSI 3525 Perl, page 31 Expressions Regulieres: exemples II $j = "JjJjJjJj"; $j =~ /j*/; oui: corresponds a tout $j =~ /j+/; oui: correspond au premier j $j =~ /j?/; oui: correspond au premier j $j =~ /j{2}/; non $j =~ /j{2}/i; oui: ignore les Majusc./Minusc. $j =~ /(Jj){3}/; oui: corresponds a la chaine entiere

CSI 3525 Perl, page 32 Expressions Regulieres: exemples III $k = "Boom Boom, out go the lights!"; $k =~ /Jim|Boom/; oui: corresponds a Boom $k =~ /(Boom){2}/; non: espace entre Booms $k =~ /(Boom ){2}/; non: a cause de la virgule $k =~ /(Boom\W){2}/; oui $k =~ /\bBoom\b/; oui: montre les limites de mots $k =~ /\bBoom.*the\b/; oui $k =~ /\Bgo\B/; non: "go" est un mot $k =~ /\Bgh\B/; oui: le "gh" dans "lights"

CSI 3525 Perl, page 33 Expressions Regulieres: Substitution I Vous pouvez modifier une variable de type chaine de caractere en appliquant une substitution. Loperateur est de nouveau =~, et la substitution secrit de la facon suivante: s/pattern1/pattern2/ $j = "Jim Plank"; $j devient: $j =~ s/.*/i Hendrix/;Jimi Hendrix $j =~ s/i/I/g ; JImI HendrIx $j =~ s/\b\w*\b/Dikembe/;Dikembe HendrIx $j =~ s/(\b\w*\b).*/J\. "\1"/;J. "Dikembe"

CSI 3525 Perl, page 34 Expressions Regulieres: Substitution II $j = "Jim Plank"; $j devient $j =~ s/(\w*) (\w*)/\1 \1 \2/;Jim Jim Plank $i = "I am the the man"; $i devient $i =~ s/(\b\w+\b) \1/\1/;I am the man (pourquoi?) Afin dexpliquer J. "Dikembe", nous devons expliquer Les parentheses en tant que memoire.

CSI 3525 Perl, page 35 Dans un autre cours Variables predefinies (il y en a plein!) Plus de detail sur les listes, tableaux et hashes Plus de detail sur les expressions regulieres Fonctions definies par lusager Gestion de Fichiers Gestion de Directoires Gestion de Processus Capabilites pour gestion de bases de donnees en Perl Programmation CGI