La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Page 1/82 Introduction à Perl Introduction à la programmation en Perl There is more than one way to do it Élise VAREILLES

Présentations similaires


Présentation au sujet: "Page 1/82 Introduction à Perl Introduction à la programmation en Perl There is more than one way to do it Élise VAREILLES"— Transcription de la présentation:

1 Page 1/82 Introduction à Perl Introduction à la programmation en Perl There is more than one way to do it Élise VAREILLES

2 Page 2/82 Introduction à Perl Plan du cours 1.Introduction à Perl 2.Structures de données 3.Structures de contrôle 4.Entrées-sorties 5.Expressions régulières 6.Références 7.Modules 8.Objets

3 Page 3/82 Introduction à Perl Plan du cours 1.Introduction à Perl 2.Structures de données 3.Structures de contrôle 4.Entrées-sorties 5.Expressions régulières 6.Références 7.Modules 8.Objets

4 Page 4/82 Introduction à Perl Perl : Practical Extraction and Report Language Langage de programmation dérivé de script Shell, crée par Larry Wall en 1986 Langage interprété : compilation/exécution Aucune limitation sur la taille des données Gestion de la taille mémoire nincombe pas au programmeur

5 Page 5/82 Introduction à Perl Avantage de Perl : écriture rapide dapplications puissantes qui peuvent tourner sur plusieurs plate-formes, prototypage rapide

6 Page 6/82 Introduction à Perl Instructions se terminant par un point virgule ; Commentaires précédés de # Blocs dinstructions entourés de { }

7 Page 7/82 Introduction à Perl Extension des fichiers.pl 1ère ligne des fichiers : chemin accès interpréteur (shebang) #! /usr/local/bin/perl Attention en Perl, données non typées

8 Page 8/82 Introduction à Perl Plan du cours 1.Introduction à Perl 2.Structures de données Scalaires, tableaux, tableaux associatifs 3.Structures de contrôle 4.Entrées-sorties 5.Expressions régulières 6.Références 7.Modules 8.Objets

9 Page 9/82 Introduction à Perl Structure de données : données scalaires Chaînes de caractères : variables interpolées : print $v : écrit la valeur de v pas dinterprétation de la valeur des variables : print $v : écrit $v Types : chaînes de caractères, nombres, références

10 Page 10/82 Introduction à Perl Structure de données : données scalaires Nombres : Plusieurs notations possibles : 123, , 12e10 Conversion nombre chaîne de caractère automatique : Références : Pointeur sur une structure de données

11 Page 11/82 Introduction à Perl Structure de données : données scalaires Attention, non obligation de déclarer les variables Déclaration : my $nom_var [= valeur] ; my $empty; my $douze = 12; my $chaine = hello ; my ($a, $b) = (1, 45); Nom_var : caractères numériques ou alphanumériques Nom uniquement chiffré : my $ = ;

12 Page 12/82 Introduction à Perl Chaînes de caractères : Concaténation :. : $chaine. à tous ; hello à tous Multiplication de chaîne : x : $c = bon x3; bonbonbon Opérateurs affectation : $x.=$y; $z x= bon ; Structure de données : données scalaires / Opérateurs et fonctions

13 Page 13/82 Introduction à Perl Structure de données : données scalaires / Opérateurs et fonctions Chaînes de caractères : Fonctions : length($c) : longueur chop($c) : suppression dernier caractère de $c chomp($c) : suppression du dernier caractère si fin de ligne reverse($c) : renvoie la chaîne inverse

14 Page 14/82 Introduction à Perl Nombres : Opérateurs classiques : +, -, /, *, % + tronquer le résultat : int($x/$y) Opérateurs affectation : +=, -=, *=, /=, %= : $x *= 4; Puissance : ** : $x**4; Fonctions : sin($x), cos($x), exp($x), log($x), abs($x), sqrt($s) Structure de données : données scalaires / Opérateurs et fonctions

15 Page 15/82 Introduction à Perl Structure de données : données scalaires Fonction defined($v) permet de déterminer si les variables sont définies ou non : 0 si var non définie (non initialisée, erreur, fin de fichier) 1 sinon

16 Page 16/82 Introduction à Perl Structure de données : données scalaires Opérateurs de tests : Valeurs scalaires fausses : 0, 0 ou 0, chaîne vide ou, undef, Valeurs scalaires vraies : toute autre valeur Opérateurs logiques : and, &&, or, ||, not, ! Opérateurs de comparaison : $x $y retourne un nombre positif si $x > $y, négatif si $x < $y et 0 si $x == $y OpérateursChaînesnombres Égalitéeq== Différencene!= Inférioritélt< Supérioritégt> Inf ou égalle<= Sup ou égalge>= Comparaisoncmp

17 Page 17/82 Introduction à Perl Plan du cours 1.Introduction à Perl 2.Structures de données Scalaires, tableaux, tableaux associatifs 3.Structures de contrôle 4.Entrées-sorties 5.Expressions régulières 6.Références 7.Modules 8.Objets

18 Page 18/82 Introduction à Perl Structure de données : tableaux et listes En Perl, pas de distinction entre liste et tableau : Déclaration : [=(liste de scalaires)] ; Tableau : Tableau vide : = (); Tableau affecté à sa déclaration : = (3, chaîne, bonjour $v ); ¬ = qw(3 chaîne bonjour $v ); 3 éléments4 éléments

19 Page 19/82 Introduction à Perl Structure de données : tableaux et listes Affectation : Du tableau = qw(2 éléments); = (2, éléments); Dun élément : $t2[2] = vaut (3, chaine, 4);

20 Page 20/82 Introduction à Perl Structure de données : tableaux et listes Accès à un élément du tableau : $t[indice] avec indice de 0 à n-1 $t2[0] renvoie 3, $t2[1] renvoie chaine et $t2[2] renvoie 4 Accès au dernier élément : $t[-1] retourne la valeur du dernier élément $t[$#t] retourne la valeur du dernier élément retourne la longueur du Pas derreur si accès à une case du tableau non définie $t[1000] = 12; de 3 à 12, les valeurs sont undef et = 1001

21 Page 21/82 Introduction à Perl Structure de données : tableaux et listes Opérations sur les tableaux : Aplatissement = (1, (deux, = (1, deux, 36); Intervalles = (1..5, toto, = (1,2, 3, 4, 5, toto, 5, 6, 7); Répétition = (1,2, = (1, 2, 3, 1, 2, 3, 1, 2, 3);

22 Page 22/82 Introduction à Perl Structure de données : tableaux et listes Tableaux particuliers : contient les arguments de la ligne de commande $0 : contient le nom du : contient les paramètres des fonctions

23 Page 23/82 Introduction à Perl Structure de données : tableaux et listes Affectations de tableaux à partir dautres tableaux ($t[1], $t[2]) = (2, toto); ($t[1], $t[2]) = (2, toto, 3); ($t[1], $t[2]) = (2); ($t[1], $t[2]) ($t[1], $t[2]) = ($t[2], $t[1]) $t[1] == 2 et $t[2] == toto $t[1] == 2 et $t[2] == toto, 3 inutile $t[1] == 2 et $t[2] == undefined $t[1] == $s[0] et $t[2] == $s[1]

24 Page 24/82 Introduction à Perl Structure de données : tableaux et listes Fonctions sur les tableaux et listes : Ajout et suppression déléments à Gauche : liste) : ajout de la liste à Gauche = (1, 2, 3, 4); 5, == (5, 6, 1, 2, 3, 4) : suppression de lélément à Gauche = (1, 2, 3, 4); $v == (2, 3, 4) et $v == 1

25 Page 25/82 Introduction à Perl Structure de données : tableaux et listes Fonctions sur les tableaux et listes : Ajout et suppression déléments à Droite liste) : ajout de la liste à Droite = (1, 2, 3, 4); 5, == (1, 2, 3, 4, 5, 6) : suppression de lélément à Droite = (1, 2, 3, 4); $v == (1, 2, 3) et $v == 4

26 Page 26/82 Introduction à Perl Structure de données : tableaux et listes Joindre/Découper des éléments dune liste : scalaire = join(séparateur, liste); = (1, 2, 3, 4); $v = join $v == 1:2:3:4 liste = split(/separateur/, chaine) = (/:/, == (1, 2, 3, 4) Trier une liste : liste1 = sort(liste2);

27 Page 27/82 Introduction à Perl Structure de données : tableaux et listes Sélectionner des éléments : liste1 = grep {sélection} = == (3, = grep {$_ !=3 and == (1, 2) Traiter une liste complète : liste2 = map({expression} = == (2, 4, 6, 8)

28 Page 28/82 Introduction à Perl Plan du cours 1.Introduction à Perl 2.Structures de données Scalaires, tableaux, tableaux associatifs 3.Structures de contrôle 4.Entrées-sorties 5.Expressions régulières 6.Références 7.Modules 8.Objets

29 Page 29/82 Introduction à Perl Structure de données : tableaux associatifs ou tables de hachage Association clé unique-valeur : Paul => Déclaration : my %h; my %h = (); my %h = (Paul => , Virginie => , Pierre => je ne sais pas encore);

30 Page 30/82 Introduction à Perl Structure de données : tableaux associatifs ou tables de hachage Accès à un élément : $h{clé} $h{Paul} renvoie Autovivification : création élément si accès alors que celui est non existant $h{Élise} ajoutera le couple (Élise => ()) à %h.

31 Page 31/82 Introduction à Perl Structure de données : tableaux associatifs ou tables de hachage Parcours des tables de hachage : ordre quelconquekeys : renvoie une liste des clés, ordre quelconque keys(%h) revoie Paul, Pierre, Virginie ordre quelconquevalues : renvoie la liste des valeurs, ordre quelconque values(%h) renvoie je ne sais pas, ,

32 Page 32/82 Introduction à Perl Structure de données : tableaux associatifs ou tables de hachage Parcours des tables de hachage : each : renvoie tous les couples un à un each(%h) renvoie le couple (Paul, ) : 1er appel each(%h) renvoie le couple (Virginie, ) : 2ième appel each(%h) renvoie le couple (Pierre, je ne sais pas encore) : 3ième appel

33 Page 33/82 Introduction à Perl Structure de données : tableaux associatifs ou tables de hachage Fonctions sur les tables de hachage : exists : renvoie vrai si lélément existe exists($h{Paul}) renverra Vrai exists($h{toto}) renverra Faux delete : supprime de la liste le couple associé à la clé delete($h{Paul}) supprime le couple (Paul => ) de %h

34 Page 34/82 Introduction à Perl Structure de données : tableaux associatifs ou tables de hachage Fonctions sur les tables de hachage : reverse : inverse les clés et les valeurs reverse(%h) retourne ( => Paul, => Virginie, je ne sais pas encore => Pierre) %h eq 0 : indique si la table de hachage est vide ou non

35 Page 35/82 Introduction à Perl Structure de données : tableaux associatifs ou tables de hachage Tables de hachage et liste : Soit une = (1, 2, 3, 4, 5, 1, 12, 6, 7). my %h crée une table de hachage de la forme : %h : (1 => 2, retiré car une et une seule clé !!! 3 => 4, 5 => 6, 1 => 12, conservé 7 => 0);

36 Page 36/82 Introduction à Perl Plan du cours 1.Introduction à Perl 2.Structures de données 3.Structures de contrôle Structures, fonctions 4.Entrées-sorties 5.Expressions régulières 6.Références 7.Modules 8.Objets

37 Page 37/82 Introduction à Perl Structure de contrôle Instructions de test : Une seule instruction conditionnée instruction-unique if (condition); instruction-unique unless (condition); Un bloc conditionné limité par des accolades if (condition) { instructions; } if (condition) { instructions1; } else {instructions2;} if (condition1) { instructions1; } elsif (condition2) { instructions2; }

38 Page 38/82 Introduction à Perl Structure de contrôle Boucles : Boucle avec nombre itérations connu : for for (initialisation; condition ; incrément) { instructions; } for (my $i = 0; $i < 20; $i++) { print $i; };

39 Page 39/82 Introduction à Perl Structure de contrôle Boucles : Boucle sans nombre itération connu : while instruction-unique while/until(condition); while (condition) {instructions; } do { instructions; } while (condition) my $j = 0; while ($j < 20) { print $j; $j += 2; } do { print $j; $j +=2; } while ($j < 20)

40 Page 40/82 Introduction à Perl Structure de contrôle Boucles sur des listes de valeurs : foreach variable (liste) { instructions;} foreach my $v (1, 43, toto) { print $v; } foreach my $i 32, titi) { instructions; } foreach { print $_; }

41 Page 41/82 Introduction à Perl Structure de contrôle Saut dinstructions : next : fin de lexécution, incrément évalué puis test last : fin de la boucle redo :redémarrage du bloc dinstructions sans incrément my $i = 1; while (1) { $i++; last if ($i > 20); next if ($i%2 != 0) print $i; }

42 Page 42/82 Introduction à Perl Plan du cours 1.Introduction à Perl 2.Structures de données 3.Structures de contrôle Structures, fonctions 4.Entrées-sorties 5.Expressions régulières 6.Références 7.Modules 8.Objets

43 Page 43/82 Introduction à Perl Fonctions La déclaration darguments au niveau des fonctions nest pas obligatoire sub nom_fonction { déclarations de variables; instructions; return scalaire ou liste; } Les variables sont locales à la fonction !!!

44 Page 44/82 Introduction à Perl Fonctions Arguments : tableau contenant les paramètres dappel de la fonction +ss paramètres : my ($a, $b, $c) 1 paramètre : my ($a) shift : raccourcis pour un paramètre : my $a = shift;

45 Page 45/82 Introduction à Perl Fonctions sub Puissance { sub Puissance ($$) {my ($v, $p) if ($v != 0) { return $p**$v; } else { return 1; } } my $valeur = Puissance(0, 2); my $valeur2 = Puissance(2, 4, 6);

46 Page 46/82 Introduction à Perl Plan du cours 1.Introduction à Perl 2.Structures de données 3.Structures de contrôle 4.Entrées-sorties 5.Expressions régulières 6.Références 7.Modules 8.Objets

47 Page 47/82 Introduction à Perl Entrées – Sorties / Standard Entrée standard : STDIN my $v = affecte à $v la valeur qui est lue sur lentrée Séparation des lignes de lentrée : while ($v = ) || while ( ) { instructions avec $v; || instructions avec $_; } do { $v = ; #avec $v déclarée avant la boucle do-while } while ($v) Lorsque la dernière ligne est atteinte, retourne undef et les boucles arrêtent.

48 Page 48/82 Introduction à Perl Entrées – Sorties / Standard Sortie standard : STDOUT print (ce quil faut écrire);: écrit sur la sortie standard printf (paramètres de format,ce quil faut écrire): écrit sur la sortie standard avec le bon format printf ( %5d %5d, $g, $g); donne …..g…..g

49 Page 49/82 Introduction à Perl Entrées – Sorties / Fichier Opérateurs sur les noms de fichier : -e : chemin daccès au fichier valide If (-e /usr/temp/fichier) { print le fichier existe; } -r : vérification des droits du fichier -w : vérification du droit décriture -x : vérification du droit dexécution ……

50 Page 50/82 Introduction à Perl Entrées – Sorties / Fichier Ouverture de fichier : open (HANDLE, mode ouverture et fichier) HANDLE : identifiant du fichier après ouverture EN MAJUSCULE (convention) Mode ouverture : open(FIC1, +Écriture (écrasement) >>Écriture (ajout) +>Lecture et écriture (écrasement) +

51 Page 51/82 Introduction à Perl Entrées – Sorties / Fichier Lecture du fichier Par ligne: $l = ; Toutes les lignes dun coup = ; Parcours de toutes les lignes une à une : while (defined ($l = )) || ($l = ) || ( )) { chomp($l); || chomp($l); || chomp($_); print $. : $l ; || print $. : $l; où $. == numéro de la ligne lue. }

52 Page 52/82 Introduction à Perl Entrées – Sorties / Fichier Écriture dans un fichier : print(FIC ce que jai à écrire $v); printf(FIC format, $v); Fermeture dun fichier : close(FIC);

53 Page 53/82 Introduction à Perl Plan du cours 1.Introduction à Perl 2.Structures de données 3.Structures de contrôle 4.Entrées-sorties 5.Expressions régulières 6.Références 7.Modules 8.Objets

54 Page 54/82 Introduction à Perl Expressions régulières Fonctionnalités : correspondance (matching) : m/motif/ substitution : s/motif/chaîne/ Opérateurs : =~, !~ ( ! $v =~ m/br/) $v =~ m/sentier/; recherche du motif sentier dans $v, T ou $v =~ s/sentier/voiture/; remplacement du motif sentier par voiture dans $v

55 Page 55/82 Introduction à Perl Expressions régulières Caractères spéciaux précédés de \ pour la correspondance et la recherche : \ | ( ) [ ]~^ $ * + ?. If ($v =~ m/to\?to/) { Instructions; }

56 Page 56/82 Introduction à Perl Expressions régulières Ensembles :. : caractère quel quil soit $v =~ s/t. t. /titi; [] : ensemble de caractère à rechercher $v =~ m/t[oai]t[oai]/; $v =~ s/p[1-9a-z]/pu; ^ : ensemble complémentaire $v =~ w/^[a-z]/;

57 Page 57/82 Introduction à Perl Expressions régulières Ensembles : \d : un chiffre \D : un non-numérique \w : un alphanumérique \W un non alpha-numérique \s : un espacement \S : un non-espacement $v =~m/ [+-] \d /

58 Page 58/82 Introduction à Perl Expressions régulières Quantificateurs : $me =~m/meuh{3}/; Regroupement : () $me =~m/(meuh){3}/; MotifExempleMots matchés *0 ou plusm/a*/Mot vide, a, aa, aaa +1 ou plusm/a+/a, aa, aaa ?0 ou 1m/a?/Mot vide ou a {n}N foism/a{3}/aaa {n, }Au moins n foism/a{3,}/aaa, aaaa, aaaaa {, n}Au plus n foism/a{,3}/Mot vide, a, aa, aaa {n, m}Entre n et m foism/a{2,3}/aa, aaa

59 Page 59/82 Introduction à Perl Expressions régulières Alternatives : | $nom =~m/(Fred|Marie | Toto) Martin/; Assertions : Début de chaîne : ^ $v =~ m/^T/; Fin de chaîne : $ $v =~ m/ie$/;

60 Page 60/82 Introduction à Perl Plan du cours 1.Introduction à Perl 2.Structures de données 3.Structures de contrôle 4.Entrées-sorties 5.Expressions régulières 6.Références 7.Modules 8.Objets

61 Page 61/82 Introduction à Perl Références Les références permettent de créer des structures complexes pointeurs en C Les références sont des scalaires !! my $ref; Elles permettent de passer comme argument aux fonctions des tableaux et des tables de hachages. Sub pointeurs ($$$) { my ($ref_tab, $ref_hash, $scalaire) $ref_tab->[3] = zut; foreach my ($cle, $valeur) = each(%$ref_hash) { print $cle, $valuer; } $scalaire = 4; }

62 Page 62/82 Introduction à Perl Références Les références permettent de créer des structures complexes pointeurs en C Opérateur sur les scalaires : anti-slash : \ my $refv = \$v; $refv = référence de $v $$refv = valeur de $v $$refv = 12; $v == de $v $refv 43.5 $v

63 Page 63/82 Introduction à Perl Références Opérateur sur les tableaux : anti-slash : \ my $reft = = (1, 2, 3 45, 65); $reft = Accès aux éléments : $$reft[2] == $ref [2] == $t[2] == $reft

64 Page 64/82 Introduction à Perl Références Opérateur sur les tables de hachage : anti-slash : \ my $refh = \%h; avec %h = (Paul, 01, Virginie, 02); $refh = référence de %h %$refh == %h Accès aux éléments de %$refh : $refh {Paul} == $$refh{Paul} == $h{Paul} == de %h $reft %h Paul => 01 Virginie => 02

65 Page 65/82 Introduction à Perl Références Opérateur ref($p) : donne le type de la référence SCALAR : pointeur sur scalaire ARRAY : pointeur sur tableau HASH : pointeur sur table de hachage FAUX : $p nest pas un pointeur If (ref($p) eq ARRAY ) { foreach my $v { print $v; }

66 Page 66/82 Introduction à Perl Références Références anonymes : my $ref1 = \34; = (6, [16, 33], [el, 0.3, 4], s) ;

67 Page 67/82 Introduction à Perl Références

68 Page 68/82 Introduction à Perl Références Accès au champ de la clé A : $r->[3]->{A} $$r[3]{A} $r->[3]{A} Accès au champ 2 de la clé P : $r->[3]->{P}->[2] $$r[3]{P}[2]

69 Page 69/82 Introduction à Perl Plan du cours 1.Introduction à Perl 2.Structures de données 3.Structures de contrôle 4.Entrées-sorties 5.Expressions régulières 6.Références 7.Modules 8.Objets

70 Page 70/82 Introduction à Perl Modules Perl tire sa puissance de la richesse des modules existants : CPAN modules à installer + documentation + use Module::Nom_Module ppm modules déjà installés, à installer, installation

71 Page 71/82 Introduction à Perl Modules Écrire son propre module : NomModule.pm # fichier Utils.pm Package Utils; Use stritc; Sub bonjour { my $prenom = shift; print bonjour $prenom; } 1;

72 Page 72/82 Introduction à Perl Modules Utiliser un module : use MonModule; #! /usr/local/bin/perl Use Utils; Utils::bonjour(Paul);

73 Page 73/82 Introduction à Perl Plan du cours 1.Introduction à Perl 2.Structures de données 3.Structures de contrôle 4.Entrées-sorties 5.Expressions régulières 6.Références 7.Modules 8.Objet

74 Page 74/82 Introduction à Perl Objets Voici les trois grands principes dimplémentation des objets en Perl5 : Un objet est simplement une référence qui sait à quelle classe elle appartient (voir la commande bless). Une classe est un paquetage qui fournit des méthodes pour travailler sur ces références. Une méthode est une fonction qui prend comme premier argument une référence à un objet (ou bien un nom de paquetage).

75 Page 75/82 Introduction à Perl Objets 1: # --- fichier Vehicule.pm --- 2: package Vehicule; 3: use strict; 4: sub new 5: { 6: my ($class,$nbRoues,$couleur) 7: my $self = {}; 8: bless($self, $class); 9: $self->{NB_ROUES} = $nbRoues; 10: $self->{COULEUR} = $couleur; 11: return $self; 12: } 13: 1; sub roule { my ($this,$vitesse) print "Avec $this->{NB_ROUES} roues, je roule a $vitesse.\n"; }

76 Page 76/82 Introduction à Perl Objets #!/usr/bin/perl -w use strict; use Vehicule; my $v = Vehicule->new( 2, "bleu" ); my $v = new Vehicule(2, "bleu" ); my $v2 = Vehicule->new( 4, "rouge" ); $v2->roule(15); Avec 2 roues, je roule à 15.

77 Page 77/82 Introduction à Perl Perl Où trouver de laide ?

78 Page 78/82 Introduction à Perl Perl Lancer linterpréteur avec loption -w qui affichera différents messages davertissement (variables non initialisées,etc.) très informatifs. Avec loption -c permet de tester uniquement la validité du code sans lexécuter. On peut les combiner en -wc, ce qui testera uniquement la validité syntaxique du code sans lexécuter.

79 Page 79/82 Introduction à Perl Perl Pour effectuer des tests encore plus stricts, vous pouvez commencer vos scripts use strict, qui apporte un certain nombre de restrictions visant à vous éviter de commettre des erreurs bêtes (notamment les fautes de frappe dans les noms de variables). Loption -w peut être remplacée par use warnings. Vous pouvez même ajouter le use diagnostics pour obtenir des messages davertissement plus détaillés.

80 Page 80/82 Introduction à Perl Perl Si vous ne comprenez toujours pas lerreur, il reste plusieurs solutions : dabord, consulter les FAQ initialement maintenues par Tom Christiansen. À partir de la version 5.004_04 de Perl, ces FAQ sont distribuées avec Perl. La commande perldoc perlfaq vous donnera lindex de ces FAQ. Une traduction en français de cette FAQ (ainsi que dautres documentations Perl ) est aussi disponible à lURL

81 Page 81/82 Introduction à Perl Perl Le réseau CPAN, a été mis en place dans le but de centraliser tous les documents et fichiers relatifs à Perl. Le site principal est ftp.funet.fi et il existe plusieurs miroirs en France dont :ftp.funet.fi ftp://ftp.jussieu.fr/pub/Perl/CPAN/, ftp://ftp.lip6.fr/pub/perl/CPAN/, Il faut noter enfin lexistence de deux sites WWW : (site géré par les éditions OReilly) qui est une source dinformations très précieuse, ainsi que qui est maintenu par un groupe dutilisateurs.http://www.perl.org/

82 Page 82/82 Introduction à Perl Introduction à la programmation en Perl There is more than one way to do it Élise VAREILLES


Télécharger ppt "Page 1/82 Introduction à Perl Introduction à la programmation en Perl There is more than one way to do it Élise VAREILLES"

Présentations similaires


Annonces Google