Petit topo sur les variables, il y en a trois sortes
les scalaires
les variables listes ou tableaux
les variables de hashage
les
variables scalaires :
Ce sont des variables contenant une
valeur singulière, elles peuvent contenir tout types de données,
elle sont précédées du caractère $
exemple:
$a = 12;
# la variable $a a pour valeur l'entier 12.
$b = "12";
# la variable $b a pour valeur la chaîne de caractères "12"
(un deux)
$c = "chameau"; #
la variable $c a pour valeur la chaîne de caractère "chameau"
$totohead = '0 + 0'; #
la variable $totohead vaut la chaîne de caractère "0 + 0"
#(zéro plus zéro) ça n'a l'air de rien mais c'est
pas grand chose.
$100 = "5 centimes"; #
la variable $100 vaut la chaîne "5 centimes"
$prune = "Ce carambar coûte
$100, comme les autres"; # $prune vaut
"5 centimes"
car avec les guillemets " il y a
interpolation et la variable $100 est remplacée par sa valeur, que
l'on a vu plus haut "5 centimes".
$prune = 'Ce carambar coûte
$100'; # Ceci est une prune car un bon bec à
100 dollars c'est du vol
(pas d'interpolation avec le signe
' apostrophe, dans ce cas la valeur et une chaîne donc pas interprété
comme variable)
$mot qui comme dans notre
exemple représentera un mot
du fichier dico.txt, et sera compris dans la variable tableau @mots
autre exemple
2 et 3
les
variables liste ou variables tableaux:
Les variables tableaux sont des variables
contenant d'autres variables scalaires indexées ( indexées
par des nombre entier positif et ce d'une manière incrémentale,
0, 1, 2, 3, 4 ....) elles sont précédées du signe
@.
@mots équivaux à
($mot[0], $mot[1], $mot[2], $mot[3] ....jusqu'à $mot[$#mot
- 1] qui représente le dernier élément )
on peut dire que la valeur du dernier
index de la liste @mots est égale à $#mot -1
exemple:
@mousquetaires = ("Athos", "Porthos",
"Aramis");
# ou
$mousquetaires[0] = "Athos";
$mousquetaires[1] = "Porthos";
$mousquetaires[2] = "Aramis";
nombre max d'éléments
du tableau = $#mousquetaires
dernier element = $mousquetaires[$#mousquetaires
- 1] # puisque la liste démarre à 0.
Les variables listes servent à stocker tous les fichiers d'un dossier, toutes les lignes d'un fichier, etc... (c'est le contenant de plusieurs singulier):
@contenu = <FILIN>; # on assigne le contenu d'un fichier à une variable liste.
une utilité parmi tant d'autre, on peut stocker le contenu des lignes d'un fichier dans une variable tableau pour que à chaque ...:
foreach $ligne(@contenu) {
if ($ligne =~
/er|ais|ait|aient|é|ez$/i ) {
print "$ligne" . "poils au nez\n";
}
else
print "$ligne" . "poils au yeux\n";
}
next if $ligne =~/ul$/;
END
@jour_de_semaine = (dimanche, lundi,
mardi, mercredi, jeudi, vendredi, samedi)
$jour_de_semaine[0] = "dimanche";
$jour_de_semaine[1] = "lundi";
$jour_de_semaine[2] = "mardi";
...
...
$#jour_de_semaine = 7
$jour_de_semaine[$#jour_de_semaine
- 1] = samedi;
On dit aussi que la valeur du dernier
index est égal au nombre des éléments du tableau moins
un.
Quelques exemples : 1 et 2 et 3 et 4 mais aussi le tableau des expressions, fonctions et autre trucs zarbi
les
variable de hachage:
Les variables de hachages sont des
variables contenant d'autres variables appelées elements, classées
par paires clef/valeur, elle sont précédées du signe
%.
A la différance des listes
ou tableaux, les variables de hashage ne sont pas indexées dans
un ordre croissant et pour cause car la clé peut être de toutes
nature (alphabétique, alphanumérique, numérique, formule
etc.... elle est considéré comme chaîne et indissociable
de la valeur qui lui est assigné). On peux donc ajouter un élément
sans prendre en compte l'ensemble du hashage, on y fait juste référence.
Assignation d'un hachage
%nom_du_hash{"clé"} = "valeur";
%nom_du_hash = ("clé", "valeur",
"clé", "valeur");
%nom_du_hash = qw(
clé =>
valeur
.... => .....
clé =>
valeur
);
%jour_de_la_semaine{"dim"} = "dimanche";
%jour_de_la_semaine = qw(
lun lundi
mar mardi
mer mercredi
jeu jeudi
ven vendredi
sam samedi
);
Il y a de nombreuses façons
de sortir un hashage, exemple:(d'un fichier ne comprenant qu'un mot par
ligne), style: ligne1 clé, ligne2 valeur, ligne3 clé, ligne4
valeur etc...
fichier du genre:
dim
sieste
lun
au soleil
mar
gras-double
solution possible parmi tant d'autres:
open
F, ">$fichier" or die
"Ouvrure impossible $!";
while
($cle = <F>) {
chomp
($cle);
$valeur
= <F>;
chomp
($valeur);
$hash{$cle}
= $valeur;
}
On verra pleins d'autres exemples:
rendez vous pour la suite après
demain, si vous le voulez bien je teste pour l'heure l'effet d'un shoubang
sans alu mignon avec une table de hash [8O°) (pfft, pfft,
me direz vous)
Pour revenir au hashage, c'est le
concept à saisir avec Perl car il permet de faire des merveilles
et ce à une vitesse inégalée.