I. Introduction▲
L'objet de cette première leçon est de vous initier au langage Perl le plus simplement et rapidement possible. Ce cours s'adresse aux néophytes, que ce soit à ceux qui ne savent pas programmer et qui veulent s'y initier aussi bien aux personnes connaissant déjà un langage et souhaitant en découvrir un autre. Bien sûr, je ne saurais trop vous recommander de lire en complément la FAQ Perl ainsi que les cours de la rubrique.
II. Qu'est-ce que Perl ?▲
Perl est un langage interprété créé par Larry Wall qui cherchait un langage de script plus commode à utiliser que awk sous Unix. C'est pourquoi Perl est un langage particulièrement recommandé pour l'extraction de données, ne serait-ce que par la puissance de ses expressions régulières. Perl est couramment utilisé en ingénierie, plus particulièrement en bioinformatique notamment pour l'analyse génomique et postgénomique. Perl est aussi un outil très utile pour le Webmestre souhaitant réaliser des interfaces CGI. Enfin, citons l'importance de la communauté Perl, à commencer par la richesse de ses modules sur CPAN et de nombreux groupes de développeurs tels les célébrissimes mongueurs de Perl ou les Perl monks.
Enfin, vous obtiendrez toutes les actualités sur Perl (Perl 6 très bientôt !) sur le site officiel de Perl.
III. Obtenir Perl▲
Dans ce paragraphe, nous envisagerons que vous travaillez sur des plates-formes très couramment utilisées telles que Windows, Linux et MacOS X. Concernant Windows, il vous suffit de vous rendre sur la page d'ActiveState et de télécharger l'installeur de Perl. Pour Linux et les Unix en général, Perl est présent dans la quasi-majorité des distributions. Consultez ainsi vos bases de données de paquetages.
Enfin, précisons que vous pouvez toujours télécharger sur le site officiel de Perl les sources de l'interpréteur et les installer après compilation.
IV. Variables scalaires et premiers programmes▲
Dans cette première approche, nous écrirons des programmes simples en Perl et apprendrons à utiliser les trois types primitifs de ce langage. Commençons donc à écrire notre premier programme nommé hello.pl :
#La ligne Shebang pour définir le chemin de l'interpréteur
#!/usr/bin/perl
#On affiche une chaîne de caractères
print
"Bonjour tout le monde !"
;
Code on ne peut plus simple, non ;) Pour exécuter ce script, tapez dans votre terminal :
perl hello.pl
Et le code s'exécutera, vous affichant sur votre terminal la chaîne de caractères !« Bonjour tout le monde ! ». Remarquez que l'écriture d'un commentaire est toujours précédée par le caractère #. Enfin, dans votre ligne shebang, il vous faudra incorporer le chemin de votre interpréteur Perl (sous Windows, vous écrirez #!C:\\Perl\\bin\\perl).
Mais, voyons comment nous pouvons stocker des informations dans des variables. Perl est un langage non typé au regard d'autres langages comme C ou C++. Toutefois, il existe des fonctions permettant de déterminer quel type est contenu dans votre variable. Il existe trois types de variables : les variables scalaires, les listes et les tables associatives. Une variable scalaire est la variable la plus élémentaire de Perl. Vous pourrez y stocker aussi bien des chaînes de caractères, un caractère ou un nombre. Envisageons ce code simple d'addition :
#!/usr/bin/perl
print
"Calcul d'un prix TTC
\n
"
;
#On initialise la valeur de notre taxe
$taxe
=
0
.196
;
#On fixe un prix hors taxe à 100
$pht
=
100
;
#D'où la valeur ttc
$ttc
=
$pht
+
($pht
*
$taxe
);
print
"Le prix TTC est de :
$ttc
.
\n
"
;
Ce code simple permet ainsi de calculer un prix codé en dur. Naturellement, nous voulons que notre code interagisse avec l'utilisateur :
#!/usr/bin/perl
print
"Calcul d'un prix TTC
\n
"
;
#On initialise la valeur de notre taxe
$taxe
=
0
.196
;
#On demande de rentrer un prix hors taxe
$pht
=
<stdin>
;
#On enlève le caractère de retour chariot
chomp
$pht
;
#D'où la valeur ttc
$ttc
=
$pht
+
($pht
*
$taxe
);
print
"Le prix TTC est de :
$ttc
.
\n
"
;
Pour stocker la valeur du prix hors taxe, nous avons recours au flux standard d'entrée (soit le clavier) avec la ligne $pht = <stdin>;. La fonction chomp est appelée pour supprimer le retour chariot. Ensuite vient le calcul TTC et l'affichage du résultat.
V. Listes et tableaux▲
Il est évident que nous n'aurons pas que des variables simples à utiliser, nous aurons sans doute à gérer des collections de variables unitaires. Les listes sont idéales pour ça. En Perl, dans une liste, vous pourrez stocker des données non plus homogènes comme en C, mais hétérogènes. D'autre part l'accès à une valeur particulière d'une liste s'effectue aussi simplement qu'un accès dans un tableau en C :
#!/usr/bin/perl
print
"Des listes et des boucles !
\n
"
;
#Un tableau bien hétérogène !
@tablo
=
(1
, 2
, 3
, "foo"
, 4
, "bar"
);
#Et une boucle une !
foreach $valeur
(@tablo
){
#Au passage, faisons une petite concaténation
print
$valeur
."
\t
"
;
}
#Accès à une valeur particulière
print
"
\n
Et si je veux la 4e valeur du tableau ?
\n
"
;
print
"La 4e valeur du tableau est
$tablo[3]\n
"
;
Vous aurez remarqué comment nous avons initialisé notre liste. La boucle foreach nous permet à chaque tour de boucle d'affecter la variable scalaire avec la valeur en cours de la liste tablo (noté en Perl @tablo pour @rray). Enfin, l'accès à une valeur s'effectue de manière naturelle comme dans beaucoup de langages en tenant compte du fait que la première valeur d'une liste est l'élément 0.
VI. Tables de hachages▲
Il nous reste un dernier type simple à envisager. Il s'agit des listes associatives appelées aussi tables de hachages. Ces listes répondent à un modèle clé=>valeur, mais sans ordre particulier en comparaison des listes que nous avons vues précédemment. Dans notre exemple, nous allons utiliser les listes associatives pour stocker des URL :
#!/usr/bin/perl
print
"Quelques URL intéressantes
\n
"
;
#Les clés à gauche de la grosse flèche, les valeurs à droite de la grosse flèche
%urls
=
("faq_perl"
=>
"http://perl.developpez.com/faq"
,
"faq_linux"
=>
"http://linux.developpez.com/faq"
,
"faq_java"
=>
"http://java.developpez.com/faq/java"
);
#Une boucle bien utile pour les listes associatives avec une chouette fonction
print
"Listes des urls :
\n
"
;
#Une boucle intéressante pour récupérer les clés et les valeurs
while (($cle
, $valeur
) =
each
(%urls
)){
print
$cle
." a pour url "
.$valeur
."
\n
"
;
}
#Pour accéder à une valeur particulière si on connait sa clé
print
"On ne retient quand même que l'url de la FAQ Perl qui est "
.$urls
{
"faq_perl"
}
." :)
\n
"
;
Dans ce code, nos clés sont des chaînes de caractères ainsi que les valeurs. Mais vos clés et valeurs peuvent être aussi bien des nombres. Dans notre boucle, nous récupérons la paire clé-valeur en cours grâce à la fonction each. Nous demandons ensuite d'afficher cette paire dans une chaîne concaténée. Enfin, l'accès à un élément en fonction de sa clé est simple, mais répond à l'annotation suivante : $nom_de_mon_hash{ma_clé}.
VII. Pour conclure, en attendant la suite▲
J'espère ainsi vous avoir fait toucher du doigt la simplicité de ce langage qui est Perl. Nous étions nombreux à croire que Perl est complexe, mais la pratique révèle que ce langage est aussi simple que les autres et qu'il s'avère particulièrement puissant pour la gestion d'un système, la mise en place d'un système d'information ou même le développement d'IHM avec les modules Tk, Gtk ou WxPerl. N'hésitez pas à consulter notre FAQ Perl pour approfondir cette petite approche. Enfin, venez nous voir sur le forum Perl ! :D
@++