Afficher/cacher Sommaire
PERL : Mémo pour scripter 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 :
``` 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 :
```perl print “Bonjour !\n”;
Les variables
Affectation de variable
Il faut avant tout déclarer les variables avec my :
```perl my $a;
Pour mettre dans la variable a la valeur chaîne toto :
```perl $a=”toto”
De la même façon, on peut mettre dans des variables des nombres :
```perl $a=42
Pour utiliser ces variables, ajouter un $ devant :
```perl print “$a\n;” toto
Les tableaux
Création
Pour créer un tableau, on utilise le symbole arobase pour le nommer :
```perl my @noms = (“pim”,”pam”,”poum”);
Pour remplir un tableau de 1 à 20, on peut utiliser des raccourcis comme :
```perl @nombres = (1 .. 20);
Appel des valeurs
On peut appeler les éléments par leur numéro d’index (ça commence à zéro) :
```perl 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 :
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 :
delete $tab[index]
Exemple de suppression du 4ème élément (index 3) :
delete $noms[3];
Transformer une chaine en tableau et inversement
Si on a une chaine du style :
$copains = “Adrien-Adeline-Mathieu-Marie-Nathalie-Elise”;
Et qu’on veut créer un tableau d’après ça, on peut utiliser split :
@tab = split(‘séparateur’, $chaine);
Exemple :
@noms = split(‘-‘,$copains);
Pour revenir à la chaine créée, on utilise join :
$chaine = join(‘séparateur’,@tab);
Exemple :
$copains = join(‘-‘,@noms);
Le tri
Pour trier le tableau, par ordre alphabétique par exemple, on utilise sort :
@tab= sort(@tab);
Les Opérateurs
Les opérateurs de calcul
Si on veut faire une addition :
$a+3
Si on veut faire une soustraction :
$a-3
Si on veut faire une multiplication :
$a*3
Si on veut faire une division :
$a/3
Les opérateurs de chaines
Si on veut concaténer une variable avec une chaine :
$b.” chaine”
Assigner, incrémenter, décrémenter
Plutôt que de faire un calcule complexe tel que
$a=$a+2
on a des raccourcis pour faire des calculs sur la variable elle même :
Pour l’addition :
$a += 2
Pour la soustraction :
$a -= 2
Pour la multiplication :
$a *= 2
Pour la division :
$a /= 2
Pour incrémenter :
$a=$a++
Pour décrémenter :
$a=$a++
Les structures conditionnelles : If
Le test “Si’” est généralement fait ainsi :
if (condition) { instructions; } else { instructions; }
Il est possible de faire ça en “oneliner” via :
(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 à
if ( $a == $b )
!= : n’est pas égal à
if ( $a != $b )
: est plus grand que
if ( $a > $b )
= : est plus grand ou égal à
if ( $a >= $b )
< : est plus petit que
if ( $a < $b )
<= : est plus petit ou égal à
if ( $a <= $b )
Comparaison de chaînes
eq : est égal à
if ( “$a” eq “$b” )
ne : n’est pas égal à
if ( “$a” ne “$b” )
Ensuite, on peut comparer par ordre alphabétique.
lt : inférieure à (située avant dans l’ordre alphabétique)
if ( “$a” lt “$b” )
le : inférieure ou égale à (située avant dans l’ordre alphabétique)
if ( “$a” le “$b” )
gt : supérieure à (située après dans l’ordre alphabétique)
if ( “$a” lt “$b” )
ge : supérieure ou égale à (située après dans l’ordre alphabétique)
if ( “$a” le “$b” )
Opérateurs Logiques
: OU logique : (or semble fonctionner) |
((condition1) | (condition2)) |
&& : ET logique :
((condition1)&&(condition2))
! : NON logique :
((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 :
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 :
unless (condition fausse) { instructions }
For
Pour le for ce n’est pas très compliqué :
for (compteur; condition; pas) { instructions }
Voici un exemple simple :
for ($i=1; $i<10; $i++) { print $i; }
While
De manière générale, la syntaxe est la suivante :
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 :
until (condition) { instructions }
Foreach
La boucle foreach permet de parcourir une liste ou un tableau :
foreach (LISTE) { instructions; }
Exemple :
foreach (@tableau) { print $_; }