wiki:PerlInitiation

Version 13 (modified by Vincent Caron, 14 years ago) (diff)

--

Perl - Initiation

Ce support de cours s'adresse à des débutants en Perl, et présente l'essentiel du language pour une durée prévue de formation de 2 jours.

1. Contexte

Historique

  • Créé en 1987 par Larry Wall, comme outil de traitement de donnée
  • Mantra 1: "Il y a plus d'une façon de le faire."
  • Mantra 2: "Rendre les choses faciles faciles, et les choses difficiles possibles."
  • PERL: Practical Extraction and Report Language
  • perldoc perlhist

Les cousins

Langage Licence Historique Actualité Popularité Environnement
Perl GPL ou Artistic 1987 5.8.x ++ CPAN, 10.000 modules
Python Python (compatible GPL) 1990 2.4.x +++ Pypi, 1300 packages
Ruby GPL ou Ruby 1995 1.8.x + Rubyforge, 1500 projets
PHP PHP4 (incompatible GPL) 1995 4.4.x/5.1.x ++++ PEAR, 370 packages

2. Installation

Unix

  • Perl est déjà installé ! perl --version
  • Se référer au système de packetage de votre système d'exploitation

Windows

  • Le plus populaire: ActiveState Perl
  • Egalement disponible: Perl pour Cygwin
  • Difficile de se passer de la ligne de commande et d'un bon éditeur

3. Description rapide

  • L'interpréteur (un simple binaire)
  • Invocation d'un script Perl (shebang: #!, ligne de commande)
  • Les modules: Perl et natifs
  • Documentation
    • Générale: perldoc, man
    • Modules: cpan.org
    • Livres: suivez le chameau ! (Camel books chez O'Reilly)

4. Premiers programmes

  • Hello world:
    #!/usr/bin/perl
    
    print "Hello world !\n";
    
  • Expressions, blocs, commentaires
  • Quoting: guillemets, apostrophes

Les variables (scalaires, listes, hashes)

  • Utilisation d'une variable scalaire:
    $hello = "Hello world !\n";
    print $hello;
    
  • Utilisation d'une liste:
    @hello = ("Hello", "world", "!\n");
    print "$hello[0] $hello[1] $hello[2]";
    print $hello[0]." ".$hello[1]." ".$hello[2];
    print join(" ", @hello);
    
  • Utilisation d'un tableau associatif (hash):
    %hello = (debut => "Hello", milieu => "world", fin => "!\n");
    print "$hello{debut} $hello{milieu} $hello{fin}";
    

Manipulation des scalaires

  • Opérateurs artithmétiques (entiers, flottants et chaînes)
    $a = 42; $b = ($a * 5) + 8;
    
  • Concaténation (chaînes)
    $a = "Hello"; $a = $a . " world"; $a .= " !\n";
    
  • Opérateur de comparaison et booléens
    $nombre = 42;
    $mot = "bonjour";
    if ($nombre == 42) { print "Egalité\n"; }
    print "Egalité\n" if $nombre == 42;
    if ($mot eq 'bonjour') { print "Equivalence\n"; }
    

Manipulation des listes

  • Méthode alternative pour construire une liste:
    @liste = qw/Hello world !\n/;
    @liste = split(/ /, "Hello world !\n");
    
  • Extraire une partie de la liste (voir splice également):
    @extrait = @liste[1..2]; # world, !\n
    
  • Extraire les éléments d'une liste (vers des scalaires):
    ($debut, undef, $fin) = @hello;
    
  • Concaténer les éléments d'une liste (dans un scalaire):
    $phrase = join(' ', @mots);
    
  • Parcourir les éléments d'une liste:
    foreach $mot (@hello) { print "$mot"; }
    foreach (@hello) { print $_; }
    foreach (@hello) { print }
    print foreach @hello;
    

Manipulation des hashes