Historique et présentation
-
Pratical Extration and Report Language, Larry Wall
-
Langage interpreté
-
Utilité : petits scripts, prototypage d'applications, scripts CGI
-
Avantages :
-
Déveleppement simple, rapide, facile à débuguer
-
Portage sur toutes les plateformes : tous UNIX et NT
-
Nombreuses librairies disponibles
-
Inconvénients : langage interprété donc :
-
Pas de binaire (sauf...),
-
Temps nécessaire à l'interprétation non négligeable
-
Des opérations très simples peuvent être infiniment
plus longues que leur équivalents C
-
Les règles de programmation ne sont pas assez strictes
Installation et lancement
-
La dernière version est la 5.004_04
-
Traditionnellement il se trouve dans /usr/local/bin (linux)
-
... et à l'ESSI dans /opt/LWperl/bin
-
Les modules (librairies ) se trouvent traditionnellement dans /usr/local/lib/perl5
-
à l'ESSI dans /opt/LWperl/lib
Les différents modes d'exécution (1)
> perl -e 'print "hello world\n" '
hello world
>
Par l'entrée standard :
> perl
print "hello world\n";
^D
hello world
>
Les différents modes d'exécution (2)
> cat hello.pl
print "hello world\n";
>perl hello.pl
hello world
>
...ou encore
> cat hello.pl
#!/usr/bin/perl
print "hello world\n";
> chmod a+x hello.pl
> ./hello.pl
hello world
>
Les différents modes d'execution (3)
-
Options d'exécution utiles :
-
-c : check : vérifie la syntaxe
-
-w : warning : exécute avec des avertissements
-
-V : imprime la version et les paramètres d'installation
Structure d'un programme, exemple
> cat exemple.pl
#!/usr/loca/bin/perl
#les dièses servent à commenter une ligne
#une routine
sub ma_routine
{
($arg1,$arg2)=@_;
print "argument 1 : $arg1\n";
print "argument 2 : $arg2\n";
if ($arg1 == $arg2)
{
print "les argumuments sont egaux\n";
}
else
{
print "les argumuments sont differents\n";
}
}
#le programme principal
$argument_1 = @ARGV[0];
$argument_2 = @ARGV[1];
ma_routine($argument_1, $argument_2);
>
Documentation interne
-
Pour avoir des infos en ligne taper :
>perldoc perl
...ou encore
>perldoc perlrun
...et plus généralement on peut avoir des infos sur chaque
module
>perldoc CGI
Sources d'information externes
-
Bibliographie conseillée
-
Les "Camels" books d'O' Reilly & Associates
-
CGI/Perl et Javascript, Isaac Cohen, Eyrolles
-
...
Les types en PERL : le type scalaire
-
Un scalaire peut être un entier, un flottant, un caractère,
une chaîne de caractères , un pointeur ...
-
Notation :
$un_car='c';
$une_chaine="chaine"
$un_entier=1;
$un_flotant=3.14;
Quel que soit le type abstrait qu'il représente, le scalaire
est codé sur 32 bits. Cela entraîne une augmentation de la
mémoire nécessaire et ralentit les temps de manipulation.
En revanche cela permet d'avoir des règles de conversion contextuelles.
$chaine = "1+1=" . (1+1)
#chaine vaut : "1+1=2", . est l'opérateur de concaténantion
Les types en PERL : le type liste
Une liste est un tableau de scalaires.
-
Notation : @list
-
@list=("chien","chat",'a',3.14,0);
-
Pour accéder aux éléments un par un :
-
Pour ajouter en fin de liste
-
push(@list,"dernier element)
-
Pour ajouter en début de liste
-
unshif(@list,"premier element);
-
Pour obtenir le dernier élément
-
Pour obtenir le premier
-
Le nombre d'éléments :
-
Essayez cet exemple !
Les types en PERL : le type table de hâchage
Notation : %hash
Les routines
Notation :
sub ma_fonction
{
($arg1,$arg2)=@_;
...
return $result;
}
$resultat=ma_fonction($parametre1,$parametre2);
-
@_ représente un liste de paramètres
-
On peut déclarer des procédures internes à d'autres
procédures
Les arguments
-
@_ : liste de paramètres
-
$_ : premier élément de la pile
-
$$ : pid
if, for, foreach ...
foreach $variable (@list)
{
print $variable;
}
Les expressions régulières
-
Supression : usage : $mot = ~ s/toto/titi/ : remplace toto par
titi
-
"match" usage : ($mots =~ m/toto/) teste si mot contient toto
-
Caractères spéciaux :
-
. tout caractère
-
* tout caractère n fois
-
^ début de ligne
-
$ fin de ligne
-
\s : espace
-
...
Les modules
-
Pour charger un module : use MODULE , en début de code
-
Modules utiles : CGI, BD, DBM,...
Exercice : écrire un petit script qui compte
le nombre de pages vues à partir des access_log de Apache et en
fait un classement.
Présentation du module CGI de perl
Script minimal
Gestion de formulaires
Contrôle des headers et push
Gestion des cookies
Stockage de fichiers