PERL : Mémo pour scripter
Table des matières
Je script, je script, mais parfois, j'ai un sacré trou de mémoire ... et je galère à trouver ce que je cherche sur Internet.
Comment on incrémente une variable ? Comment on fait un SI, un POUR ?
Et bien la réponse se trouve ci-dessous !
Dans tous mes scripts Perl, j'utilise :
Cela force l'initialisation propre des variables et permet d'être rigoureux dans le code.
Je rappelle aussi que toutes les lignes se terminent par un point-virgule, et que lorsqu'on affiche avec print une variable, il faut penser à effectuer le saut de ligne avec \n :
Il faut avant tout déclarer les variables avec my :
Pour mettre dans la variable a la valeur chaîne toto :
De la même façon, on peut mettre dans des variables des nombres :
Pour utiliser ces variables, ajouter un $ devant :
Pour créer un tableau, on utilise le symbole arobase pour le nommer :
Pour remplir un tableau de 1 à 20, on peut utiliser des raccourcis comme :
On peut appeler les éléments par leur numéro d'index (ça commence à zéro) :
On a à notre disposition 4 fonctions :
Exemple :
On peut aussi supprimer un élément bien précis du tableau en fonction de son nom :
Exemple de suppression du 4ème élément (index 3) :
Si on a une chaine du style :
Et qu'on veut créer un tableau d'après ça, on peut utiliser split :
Exemple :
Pour revenir à la chaine créée, on utilise join :
Exemple :
Pour trier le tableau, par ordre alphabétique par exemple, on utilise sort :
Pour trouver la longueur d'un tableau, soit on peut utiliser le dernier élément du tableau et ajouter 1 :
Soit directement avec la variable tableau :
Si on veut faire une addition :
Si on veut faire une soustraction :
Si on veut faire une multiplication :
Si on veut faire une division :
Si on veut concaténer une variable avec une chaine :
Plutôt que de faire un calcule complexe tel que
on a des raccourcis pour faire des calculs sur la variable elle même :
Pour l'addition :
Pour la soustraction :
Pour la multiplication :
Pour la division :
Pour incrémenter :
Pour décrémenter :
Le test "Si'" est généralement fait ainsi :
Il est possible de faire ça en "oneliner" via :
Pour les exemples, nous avons besoin d'opérateurs de comparaison, voir ci-dessous.
== : est égal à
!= : n'est pas égal à
> : est plus grand que
>= : est plus grand ou égal à
< : est plus petit que
<= : est plus petit ou égal à
eq : est égal à
ne : n'est pas égal à
Ensuite, on peut comparer par ordre alphabétique.
lt : inférieure à (située avant dans l'ordre alphabétique)
le : inférieure ou égale à (située avant dans l'ordre alphabétique)
gt : supérieure à (située après dans l'ordre alphabétique)
ge : supérieure ou égale à (située après dans l'ordre alphabétique)
|| : OU logique : (or semble fonctionner)
&& : ET logique :
! : NON logique :
Perl n'inclut pas de fonction Switch par défaut (il faut installer le module Switch pour ça).
On peut donc chainer les if avec des elsif :
L'instruction unless est identique au if, c'est juste que ça exécute les instructions si la condition est fausse :
Pour le for ce n'est pas très compliqué :
Voici un exemple simple :
De manière générale, la syntaxe est la suivante :
Voici un exemple :
L'instruction until est identique au while, c'est juste que ça exécute les instructions si la condition est fausse :
La boucle foreach permet de parcourir une liste ou un tableau :
Exemple :
Introduction
Je script, je script, mais parfois, j'ai un sacré trou de mémoire ... et je galère à trouver ce que je cherche sur Internet.
Comment on incrémente une variable ? Comment on fait un SI, un POUR ?
Et bien la réponse se trouve ci-dessous !
Rappels de base
Dans tous mes scripts Perl, j'utilise :
Code BASH :
use strict; use warnings;
Cela force l'initialisation propre des variables et permet d'être rigoureux dans le code.
Je rappelle aussi que toutes les lignes se terminent par un point-virgule, et que lorsqu'on affiche avec print une variable, il faut penser à effectuer le saut de ligne avec \n :
Code BASH :
print "Bonjour !\n";
Les variables
Affectation de variable
Il faut avant tout déclarer les variables avec my :
Code BASH :
my $a;
Pour mettre dans la variable a la valeur chaîne toto :
Code BASH :
$a="toto"
De la même façon, on peut mettre dans des variables des nombres :
Code BASH :
$a=42
Pour utiliser ces variables, ajouter un $ devant :
Code BASH :
print "$a\n;"
toto
Les tableaux
Création
Pour créer un tableau, on utilise le symbole arobase pour le nommer :
Code BASH :
my @noms = ("pim","pam","poum");
Pour remplir un tableau de 1 à 20, on peut utiliser des raccourcis comme :
Code BASH :
@nombres = (1 .. 20);
Appel des valeurs
On peut appeler les éléments par leur numéro d'index (ça commence à zéro) :
Code BASH :
print "$noms[0]";
Ajouter et supprimer des éléments
On a à notre disposition 4 fonctions :
- push(@tab, "Valeur") : Ajoute un élément à la fin du tableau
- unshift(@tab, "Valeur") : Ajoute un élément au début du tableau
- pop(@tab) : Supprime le dernier élément du tableau
- shift(@tab) : Supprime le premier élément du tableau
Exemple :
Code BASH :
push(@noms, "adrien"); unshift(@noms, "adeline"); pop(@noms); shift(@noms);
On peut aussi supprimer un élément bien précis du tableau en fonction de son nom :
Code BASH :
delete $tab[index]
Exemple de suppression du 4ème élément (index 3) :
Code BASH :
delete $noms[3];
Transformer une chaine en tableau et inversement
Si on a une chaine du style :
Code BASH :
$copains = "Adrien-Adeline-Mathieu-Marie-Nathalie-Elise";
Et qu'on veut créer un tableau d'après ça, on peut utiliser split :
Code BASH :
@tab = split('séparateur', $chaine);
Exemple :
Code BASH :
@noms = split('-',$copains);
Pour revenir à la chaine créée, on utilise join :
Code BASH :
$chaine = join('séparateur',@tab);
Exemple :
Code BASH :
$copains = join('-',@noms);
Le tri
Pour trier le tableau, par ordre alphabétique par exemple, on utilise sort :
Code BASH :
@tab= sort(@tab);
Longueur du tableau
Pour trouver la longueur d'un tableau, soit on peut utiliser le dernier élément du tableau et ajouter 1 :
Code TEXT :
$nb = $#tab + 1
Soit directement avec la variable tableau :
Code BASH :
$nb = @tab;
Les Opérateurs
Les opérateurs de calcul
Si on veut faire une addition :
Code BASH :
$a+3
Si on veut faire une soustraction :
Code BASH :
$a-3
Si on veut faire une multiplication :
Code BASH :
$a*3
Si on veut faire une division :
Code BASH :
$a/3
Les opérateurs de chaines
Si on veut concaténer une variable avec une chaine :
Code BASH :
$b." chaine"
Assigner, incrémenter, décrémenter
Plutôt que de faire un calcule complexe tel que
Code BASH :
$a=$a+2
on a des raccourcis pour faire des calculs sur la variable elle même :
Pour l'addition :
Code BASH :
$a += 2
Pour la soustraction :
Code BASH :
$a -= 2
Pour la multiplication :
Code BASH :
$a *= 2
Pour la division :
Code BASH :
$a /= 2
Pour incrémenter :
Code BASH :
$a=$a++
Pour décrémenter :
Code BASH :
$a=$a++
Les structures conditionnelles : If
Le test "Si'" est généralement fait ainsi :
Code BASH :
if (condition) { instructions; } else { instructions; }
Il est possible de faire ça en "oneliner" via :
Code BASH :
(condition) ? instruction si vrai : instruction si faux
Pour les exemples, nous avons besoin d'opérateurs de comparaison, voir ci-dessous.
Les opérateurs de comparaison
Comparaison d'entiers
== : est égal à
Code BASH :
if ( $a == $b )
!= : n'est pas égal à
Code BASH :
if ( $a != $b )
> : est plus grand que
Code BASH :
if ( $a > $b )
>= : est plus grand ou égal à
Code BASH :
if ( $a >= $b )
< : est plus petit que
Code BASH :
if ( $a < $b )
<= : est plus petit ou égal à
Code BASH :
if ( $a <= $b )
Comparaison de chaînes
eq : est égal à
Code BASH :
if ( "$a" eq "$b" )
ne : n'est pas égal à
Code BASH :
if ( "$a" ne "$b" )
Ensuite, on peut comparer par ordre alphabétique.
lt : inférieure à (située avant dans l'ordre alphabétique)
Code BASH :
if ( "$a" lt "$b" )
le : inférieure ou égale à (située avant dans l'ordre alphabétique)
Code BASH :
if ( "$a" le "$b" )
gt : supérieure à (située après dans l'ordre alphabétique)
Code BASH :
if ( "$a" lt "$b" )
ge : supérieure ou égale à (située après dans l'ordre alphabétique)
Code BASH :
if ( "$a" le "$b" )
Opérateurs Logiques
|| : OU logique : (or semble fonctionner)
Code BASH :
((condition1)||(condition2))
&& : ET logique :
Code BASH :
((condition1)&&(condition2))
! : NON logique :
Code BASH :
((condition1)!(condition2))
Les structures conditionnelles Partie 2
If elsif else
Perl n'inclut pas de fonction Switch par défaut (il faut installer le module Switch pour ça).
On peut donc chainer les if avec des elsif :
Code BASH :
if (condition) { instructions; } elsif (condition) { instructions; } else (condition) { instructions; }
unless (if inversé)
L'instruction unless est identique au if, c'est juste que ça exécute les instructions si la condition est fausse :
Code BASH :
unless (condition fausse) { instructions }
For
Pour le for ce n'est pas très compliqué :
Code BASH :
for (compteur; condition; pas) { instructions }
Voici un exemple simple :
Code BASH :
for ($i=1; $i<10; $i++) { print $i; }
While
De manière générale, la syntaxe est la suivante :
Code BASH :
while (condition) { instructions }
Voici un exemple :
Until (while inversé)
L'instruction until est identique au while, c'est juste que ça exécute les instructions si la condition est fausse :
Code BASH :
until (condition) { instructions }
Foreach
La boucle foreach permet de parcourir une liste ou un tableau :
Code BASH :
foreach (LISTE) { instructions; }
Exemple :
Code BASH :
foreach (@tableau) { print $_; }