par Guido Socher L´auteur: Guido est un fan de Linux depuis longtemps, et récement il est devenu éditeur pour LinuxFocus. Ces jours-ci il est également très occupé à rénover la maison, planter des salades, et d'autres trucs à faire dans le jardin. Sommaire: |
Résumé:
C'est le début d'une série d'articles sur Perl. Aucune connaissance préalable de Perl n'est nécéssaire pour comprendre cet article. Une connaissance des langages procéduraux (comme C ou Pascal) rend les débuts avec Perl un peu plus faciles.
Perl est un langage de script qui a été développé au départ par Larry Wall. Le code source peut directement être "éxecuté" par interprétation par le programme perl. Ce programme perl est habituellement installé sous /usr/bin/perl. Perl est similaire en bien des points aux programmes unix classiques sed et awk, mais perl a fait un bon bout de chemin par rapport à eux. Aujourd'hui vous pouvez aussi bien faire de la programmation orientée objet, et créer des interfaces graphiques avec perl. On peut facilement accroître les fonctionalités de perl grâce à l'ajout de librairies et d'archives perl, que l'on trouve sur CPAN qui en contient la pluspart. Ce premier article ne va cependant pas s'aventurer dans ces sujets avancés. Je souhaite plutôt vous montrer quelques bases, et aborder les sujets plus pointus dans de prochains articles.
Perl est un langage de scripts très utile. C'est un outil universel pour quiconque ayant des connaissances en programmation.
Sauvez le
programme suivant sous le nom mon1erprg et ensuite rendez-le
exécutable avec la commande
chmod 755 mon1erprg.
Lancez le programme et regardez ce qu'il fait.
#!/usr/bin/perl -w
print "Quel est votre nom?\n"; $nom=<STDIN>; #suppression du caractère retour chariot: chomp($nom); $long=length($nom); print "\nSalut $nom! Votre nom a une longueur de $long caractères\n"; |
Regardons maintenant le code. La première ligne n'est pas un
commentaire. Ce type de ligne commencant par "#!" est
typique des scripts unix, et précise au système d'exploitation
quoi faire avec ce fichier texte. Toute ligne après la première
ligne commencant par un caractère # est une ligne de commentaire
(par exemple la ligne 4 de notre programme). Nous pouvons aussi voir
que toutes les instructions sont terminées par un point virgule.
Un nom de variable commence par un signe dollar. Les variables
perl peuvent contenir des chaines de caractères, des entiers, et
des réels. Les données sont converties automatiquement dans le bon
type en fonction du contexte d'utilisation de la variable.
Les $-variables sont appelées variables scalaires. Perl possède
aussi des variables tableaux (dont les noms commencent
par un @ et non un $) et tables de hashage (commencant par un % et non
un $). Nous discuterons de ces types de variables dans un article
ultérieur.
La fonction print sur la seconde ligne de notre programme écrit une
chaine de caractères sur la sortie standard (stdout). Elle est
similaire à la commande echo dans les scripts shells, et les
variables sont remplacées par leur valeur si la chaine de caractère
est entre guillemets (").
Les variables entre apostrophes simples (') ne sont pas remplacées
par leur valeur, et un backslash peut être utilisé pour protéger
des caractères spéciaux, tels le signe dollar ou bien une apostrophe
dans une chaine entre apostrophes ou guillemets.
Voici un exemple :
#!/usr/bin/perl -w
$nom="joe"; print "1 $nom\n"; print '2 ', $nom , "\n"; print '3 ', '$nom',"\n"; print "4 \"$nom\"\n"; print "5 \$nom\n"; print "6 \"\$nom\"\n"; |
Ceci va donner :
1 joe
2 joe 3 $nom 4 "joe" 5 $nom 6 "$nom" |
Retournons à notre programme initial. La ligne $nom=<STDIN>; attend une entrée clavier de la part de l'utilisateur, et ce jusqu'à ce qu'il/elle ait tapé sur "entrée". Après cette ligne, la variable $nom contient ce que l'utilisateur a entré, y compris le caractère retour chariot de fin de ligne. La commande chomp($nom); supprime ce caractère final de la variable $nom. Pour finir la fonction length compte le nombre de caractères présents dans $nom.
Malheureusement notre programme a un bug. Que se passe-t-il si vous tapez
une tabulation ou un espace après votre nom ? Il sera également décompté.
Comment pouvons nous résoudre ce problème ?
Ce dont nous avons besoin est d'une fonction du type "rechercher/remplacer"
qui supprime tous les espaces du nom. Perl est très fort pour manipuler
des chaines de caractères, et offre cette fonctionnalité.
[ \t] est une expression régulière qui correspond
à un espace ou une tabulation. En perl ceci peut aussi être abrégé,
et écrit \s. (Plus d'informations sur les
expressions régulières peuvent
être obtenues ici). La commande de substitution en perl
s'appuie sur une expression régulière, et a la syntaxe suivante :
$nom =~ s/regexp/remplacement/g;
Si on laisse la chaine de remplacement vide, alors toutes les occurences
correspondant à l'expression régulière ne seront pas remplacées
mais supprimées.
Maintenant notre programme a l'allure suivante :
#!/usr/bin/perl -w
print " Quel est votre nom?\n"; $nom=<STDIN>; #suppression du caractère retour charriot: chomp($nom); print "\nSalut $nom!"; #suppression des espaces de la chaine de caractères: $nom=~s/\s//g; $long=length($nom); print " Votre nom a une longueur de $long caractères\n"; |
Ce n'est pas un programme très utile car il n'a aucune structure de contrôle (boucles et conditions) mais il vous donne une idée de ce que peut être un programme en perl. Cette série d'articles va continuer, et on va vite arriver à des programmes plus complexes.
Vous pouvez également éssayer "man perl" et "man perlfunc" pour voir quelles sont les fonctions disponibles. Tout ceci n'est cependant que du matériel de référence, et vous pouvez suivre ce tutorial ou lire un livre tel que "Programmation en Perl" de chez O'Reilly pour apprendre le perl.
Site Web maintenu par l´équipe d´édition LinuxFocus
© Guido Socher LinuxFocus 1999 |
Translation information:
|
1999-09-23, generated by lfparser version 0.7