--- name: perl category: language language: perl filename: learnperl-fr.pl contributors: - ["Korjavin Ivan", "http://github.com/korjavin"] translators: - ["Matteo Taroli", "http://www.matteotaroli.be"] lang: fr-fr --- Perl 5 est un langage de programmation riche en fonctionnalité, avec plus de 25 ans de développement. Perl 5 fonctionne sur plus de 100 plateformes, allant des pc portables aux mainframes et est autant adapté à un prototypage rapide qu'à des projets de grande envergure. ```perl # Les commentaires en une ligne commencent par un dièse #### Types de variables de Perl # Les variables comment par un symbole précisant le type. # Un nom de variable valide commence par une lettre ou un underscore, # suivi d'un nombre quelconque de lettres, chiffres ou underscores. ### Perl a trois types principaux de variables: $scalaire, @tableau and %hash ## Scalaires # Un scalaire représente une valeure unique : my $animal = "chameau"; my $reponse = 42; # Les valeurs scalaires peuvent être des strings, des entiers ou des nombres à virgule flottante # et Perl les convertira automatiquement entre elles quand nécessaire. ## Tableaux # Un tableau représente une liste de valeurs : my @animaux = ("chameau", "lama", "chouette"); my @nombres = (23, 42, 69); my @melange = ("chameau", 42, 1.23); ## Hashes # Un hash représente un ensemble de paires de clé/valeur : my %fruit_couleur = ("pomme", "rouge", "banane", "jaune"); # Vous pouvez utiliser des espaces et l'opérateur "=>" pour les disposer plus joliment : my %fruit_couleur = ( pomme => "rouge", banane => "jaune" ); # Les scalaires, tableaux et hashes sont plus amplement documentés dans le perldata # (perldoc perldata) # Des types de données plus complexes peuvent être construits en utilisant des références, # vous permettant de construire des listes et des hashes à l'intérieur d'autres listes et hashes. #### Conditions et boucles # Perl possède la plupart des conditions et boucles habituelles. if ($var) { ... } elsif ($var eq 'bar') { ... } else { ... } unless (condition) { ... } # Ceci est fourni en tant que version plus lisible de "if (!condition)" # la postcondition à la sauce Perl print "Yow!" if $zippy; print "Nous n'avons pas de banane." unless $bananes; # while while (condition) { ... } # boucle for et iteration for (my $i = 0; $i < $max; $i++) { print "l'index est $i"; } for (my $i = 0; $i < @elements; $i++) { print "L'élément courant est " . $elements[$i]; } for my $element (@elements) { print $element; } # implicitement for (@elements) { print; } #### Expressions régulières # Le support des expressions régulières par Perl est aussi large que profond # et est sujet à une longue documentation sur perlrequick, perlretut et ailleurs. # Cependant, pour faire court : # Simple correspondance if (/foo/) { ... } # vrai si $_ contient "foo" if ($a =~ /foo/) { ... } # vrai si $a contient "foo" # Simple substitution $a =~ s/foo/bar/; # remplace foo par bar dans $a $a =~ s/foo/bar/g; # remplace TOUTES LES INSTANCES de foo par bar dans $a #### Fichiers and E/S # Vous pouvez ouvrir un fichier pour y écrire ou pour le lire avec la fonction "open()". open(my $in, "<", "input.txt") or die "Impossible d'ouvrir input.txt: $!"; open(my $out, ">", "output.txt") or die "Impossible d'ouvrir output.txt: $!"; open(my $log, ">>", "my.log") or die "Impossible d'ouvrir my.log: $!"; # Vous pouvez lire depuis un descripteur de fichier grâce à l'opérateur "<>". # Dans un contexte scalaire, il lit une seule ligne depuis le descripteur de fichier # et dans un contexte de liste, il lit le fichier complet, assignant chaque ligne à un # élément de la liste : my $ligne = <$in> my $lignes = <$in> #### Ecrire des sous-programmes # Ecrire des sous-programmes est facile : sub logger { my $logmessage = shift; open my $logfile, ">>", "my.log" or die "Impossible d'ouvrir my.log: $!"; print $logfile $logmessage; } # Maintenant, nous pouvons utiliser le sous-programme comme n'importe quelle fonction intégrée : logger("On a un sous-programme de logging!!"); ``` #### Utiliser des modules Perl Les modules Perl fournissent une palette de fonctionnalités vous évitant de réinventer la roue et peuvent être téléchargés depuis CPAN (http://www.cpan.org/). Un certain nombre de modules populaires sont inclus dans la distribution même de Perl. Perlfaq contiens des questions et réponses liées aux tâches habituelles et propose souvent des suggestions quant aux bons modules à utiliser. #### Pour en savoir plus - [perl-tutorial](http://perl-tutorial.org/) - [Learn at www.perl.com](http://www.perl.org/learn.html) - [perldoc](http://perldoc.perl.org/) - and perl built-in : `perldoc perlintro`