Perl
Aller à la navigation
Aller à la recherche
| Type | Langage interprété |
|---|---|
| Paradigmes | Procédural, scriptable, orienté texte |
| Extension | .pl |
| Bonnes pratiques | use strict; use warnings; |
Perl est un langage de programmation interprété, faiblement typé, très utilisé pour l'administration système, le traitement de texte et l'écriture de plugins de supervision. Cette page regroupe les bases de la syntaxe.
Usage
use strict;
use warnings;
print "Hello world" ;
<>;
Exécution :
perl fichier.pl
L'opérateur <> marque une pause en attendant une saisie sur l'entrée
standard.
Variables
my $a = 3;
my $b = 2;
my $somme = $a + $b;
print "$a + $b = $somme";
Comparaisons
Booléens (numériques)
my $a = 2;
my $b = 4;
# La fonction "int" permet de convertir explicitement un scalaire en entier.
print "$a < $b : " . int ($a < $b) . "\n";
print "$a > $b : " . int ($a > $b) . "\n";
print "$a == $b : " . int ($a == $b) . "\n";
print "$a == $a : " . int ($a == $a) . "\n";
print "$a != $b : " . int ($a != $b) . "\n";
print "$a != $a : " . int ($a != $a) . "\n";
print "$a <= $b : " . int ($a <= $b) . "\n";
print "$a <= $a : " . int ($a <= $a) . "\n";
Chaînes de caractères
$a lt $b # lesser than (plus petit)
$a gt $b # greater than (plus grand)
$a eq $b # equals
$a ne $b # not equal
$a le $b # lesser or equal
$a ge $b # greater or equal
Opérateur « ou »
print '0 or 0 : ' . (0 or 0) . "\n";
print '0 or 1 : ' . (0 or 1) . "\n";
print '1 or 0 : ' . (1 or 0) . "\n";
print '1 or 1 : ' . (1 or 1) . "\n";
print '0 || 0 : ' . (0 || 0) . "\n";
print '0 || 1 : ' . (0 || 1) . "\n";
print '1 || 0 : ' . (1 || 0) . "\n";
print '1 || 1 : ' . (1 || 1) . "\n";
Opérateur « et »
print '0 and 0 : ' . (0 and 0) . "\n";
print '0 and 1 : ' . (0 and 1) . "\n";
print '1 and 0 : ' . (1 and 0) . "\n";
print '1 and 1 : ' . (1 and 1) . "\n";
print '0 && 0 : ' . (0 && 0) . "\n";
print '0 && 1 : ' . (0 && 1) . "\n";
print '1 && 0 : ' . (1 && 0) . "\n";
print '1 && 1 : ' . (1 && 1) . "\n";
Priorités
print '0 and 1 or 1 : ' . (0 and 1 or 1) . "\n";
print '0 and 1 || 1 : ' . (0 and 1 || 1) . "\n";
print '0 && 1 or 1 : ' . (0 && 1 or 1) . "\n";
print '0 and (1 or 1) : ' . (0 and (1 or 1)) . "\n";
print '(0 and 1) or 1 : ' . ((0 and 1) or 1) . "\n";
Structures conditionnelles
if / elsif / else
use strict;
use warnings;
print "Entrez le mot de passe : ";
my $pass = <>;
chomp $pass;
if ($pass eq "s'il te plait")
{
print "Accès autorisé.\n";
print "Bienvenue, Jean.\n";
}
elsif ($pass eq "sesame ouvre-toi")
{
print "Accès autorisé.\n";
print "Bienvenue, Marie.\n";
}
else
{
print "Accès refusé.\n";
print "Allez vous faire voir !\n";
}
unless (if inversé)
use strict;
use warnings;
print "Entrez le mot de passe : ";
my $pass = <>;
chomp $pass;
# Quitter le programme À MOINS QUE le mot de passe soit le bon.
unless ($pass eq "s'il te plait")
{
print "Accès refusé.\nAllez vous faire voir !\n";
exit(1);
}
print "Accès autorisé.\n";
print "Bienvenue.\n";
Boucles
while
while ($compteur < $limite)
{
$compteur = $compteur + 1;
print "$compteur lamas\n";
}
until
use strict;
use warnings;
my $nb_mystere = int (rand 101);
my $essai = -1;
print "Devinez le nombre mystère.\n";
until ($essai == $nb_mystere)
{
print '> ';
$essai = <>;
if ($essai < $nb_mystere) { print "C'est plus.\n"; }
elsif ($essai > $nb_mystere) { print "C'est moins.\n"; }
}
print "Gagné !";
do ... while
use strict;
use warnings;
my $nb_mystere = int (rand 101);
my $essai;
print "Devinez le nombre mystère.\n";
do
{
print '> ';
$essai = <>;
if ($essai < $nb_mystere) { print "C'est plus.\n"; }
elsif ($essai > $nb_mystere) { print "C'est moins.\n"; }
} while ($essai != $nb_mystere);
print "Gagné !";
for
use strict;
use warnings;
for (my $compteur = 0; $compteur <= 30; $compteur++)
{
print "$compteur\n";
}
Portée et blocs
La notion de bloc crée une zone de portée pour les variables déclarées avec
my (voir Perl — my (portée)).
use strict;
use warnings;
my $var = "Hello";
{
my $var2 = "World";
print $var; # affiche "Hello"
print $var2; # affiche "World"
}
print $var; # affiche "Hello"
print $var2; # ERREUR : $var2 n'existe plus hors du bloc
Incrémentation
$compteur = 4;
$compteur += 1; # 5
$compteur += 2; # 7
$compteur -= 1; # 6
$compteur /= 2; # 3
$compteur .= " petits cochons"; # "3 petits cochons"
$compteur = 4;
$compteur++; # 5
++$compteur; # 6
$compteur--; # 5
--$compteur; # 4
# pré/post-incrémentation
my $compteur = 4;
print $compteur++; # affiche 4
print $compteur; # affiche 5
print ++$compteur; # affiche 6