A perl programmer has to develop scripts using perl languages. Scripts are usually required in web applications or applications that are run on the internet. A perl programmer needs to have strong communication skills and knowledge of other programming languages, but most importantly Java programming language.
1. Introduction à Perl(Pratical Extraction and Report language) (pathologically Eclectic Rubbish Lister) Mohamed Bouhamed
2. Sommaire Historique / Caractéristiques Installation / Début d’un programme Variables / Structures de contrôle Contrôle spéciaux Expressions Rationnelles Gestion Fichiers Appel système Fonctions Orienté Objet Un exemple de CGI Un exemple de socket
Historique / Caractéristiques
Installation / Début d’un programme
Variables / Structures de contrôle
Contrôle spéciaux
Expressions Rationnelles
Gestion Fichiers
Appel système / Fonctions
Orienté Objet
Exemples de CGI Socket
3. Historique En 1987, 1ereversion par Larry Wall. Inspiré de Awk, sed, sh, C. langage naturelle. Il y a plus d’une façon de le faire.TIM-toady. Perl rend le travail simple, facile et le travail difficile possible. Le couteau suisse des chaînes. Aujourd’hui Version 5.
Historique / Caractéristiques
Installation / Début d’un programme
Variables / Structures de contrôle
Contrôle spéciaux
Expressions Rationnelles
Gestion Fichiers
Appel système / Fonctions
Orienté Objet
Exemples de CGI Socket
4. Caractéristiques Points positifs: Rapide/efficace pour programmer Grand nombre de possibilités Portable Points négatifs: difficilement réutilisable s’écrit en un unique fichier Lent à l’exécution
Historique / Caractéristiques
Installation / Début d’un programme
Variables / Structures de contrôle
Contrôle spéciaux
Expressions Rationnelles
Gestion Fichiers
Appel système / Fonctions
Orienté Objet
Exemples de CGI Socket
5. Installation
Linux par défaut sur:
Debian version 2.1 RedHat version 6.0
Slackware version 2.5SuSE version 6.0
Unix
par défaut sur: Aix 4.3.3.Solaris 8 IRIX
pour HPUX SCO : source (www.perl.com/CPAN-local/src/5.0/)
Macintosh
www.macperl.com
Windows 9x/NT
www.activestate.com/download/ActivePerl/Windows/5.6/
Historique / Caractéristiques
Installation / Début d’un programme
Variables / Structures de contrôle
Contrôle spéciaux
Expressions Rationnelles
Gestion Fichiers
Appel système / Fonctions
Orienté Objet
Exemples de CGI Socket
6. Début d’un programme Options de compilation: #!usr/bin/Perl -w : warning #!c:/Perl/bin/Perl-d : debug Librairies comme #include Use CGI; CGI: librairie pour accès web SQL: librairie pour accéder à une base SQL Socket: égal socket.h
Historique / Caractéristiques
Installation / Début d’un programme
Variables / Structures de contrôle
Contrôle spéciaux
Expressions Rationnelles
Gestion Fichiers
Appel système / Fonctions
Orienté Objet
Exemples de CGI Socket
7. Variables variable scalaire $variable $variable=«Hello World»; $variable=25; Tableau @tab $tab[0]: Valeur 0emede @tab. table de hashage. %tabhash %tabhash{$var}=@tab;
Historique / Caractéristiques
Installation / Début d’un programme
Variables / Structures de contrôle
Contrôle spéciaux
Expressions Rationnelles
Gestion Fichiers
Appel système / Fonctions
Orienté Objet
Exemples de CGI Socket
8. Structures de contrôle Conditions If ( expression ){}else{} Unless ( expression ){} $val=(expression ? truevalue : falsevalue); boucles do{}while/until (expression ) For{exp_initiale;test_exp;increm_exp }() while(test_exp)() foreach $i (@liste){}
Historique / Caractéristiques
Installation / Début d’un programme
Variables / Structures de contrôle
Contrôle spéciaux
Expressions Rationnelles
Gestion Fichiers
Appel système / Fonctions
Orienté Objet
Exemples de CGI Socket
9. Contrôle spéciaux last : branchement après la boucle While(exp 1){ if( exp2 ){ last;}} #saut last ici next: branchement en fin de boucle. While(exp 1){ if( exp2 ){ next;} truc; #saut next ici} redo: branchement en début de boucle While(exp 1){#saut redoici truc;if( exp2 ){redo;}}
Historique / Caractéristiques
Installation / Début d’un programme
Variables / Structures de contrôle
Contrôle spéciaux
Expressions Rationnelles
Gestion Fichiers
Appel système / Fonctions
Orienté Objet
Exemples de CGI Socket
10. Expressions Rationnelles
Motifs
.n’importe quel lettre sauf n.
s caractères espace [ ntnf]| inverse S
w : caractères de mots [a-zA-Z0-9]| inverse W
d : chiffres [0-9]| inverse D
/i : ignorer la case.
[^...] : négation des caractères du crochet.
Ancrage^: correspond au début de ligne.
Historique / Caractéristiques
Installation / Début d’un programme
Variables / Structures de contrôle
Contrôle spéciaux
Expressions Rationnelles
Gestion Fichiers
Appel système / Fonctions
Orienté Objet
Exemples de CGI Socket
11. Expressions Rationnelles(bis) Alternatif : "|"correspond à un ou. Multiplicatif*,0 ou n fois +,1 ou n fois ?,0 ou 1 fois le Utilisations /pattern/option if ( $a =~ /^bon/ i) vrai si $a commence par bon ou Bon s/pattern/replace/option $wi= ~ s/y/x/g : remplace toute les y dans wi par x. Split @tab= split(/:/,$v) : coupe la chaîne $v suivant le délimiteur «:» et le stocke dans tab.
Historique / Caractéristiques
Installation / Début d’un programme
Variables / Structures de contrôle
Contrôle spéciaux
Expressions Rationnelles
Gestion Fichiers
Appel système / Fonctions
Orienté Objet
Exemples de CGI Socket
12. Gestion Fichiers Descripteurs STDIN entrée standardSTDOUT sortie standard Fonction open open(FILEH,«monfichier»); mon fichier est ouvert en lecture. open(FILEW,«>monfichier»); mon fichier est ouvert en écriture. open(FILEW,«>>monfichier»); mon fichier est ouvert en écriture et créé en mode append. Fonction close close (DES); ferme le descripteur de fichier
Historique / Caractéristiques
Installation / Début d’un programme
Variables / Structures de contrôle
Contrôle spéciaux
Expressions Rationnelles
Gestion Fichiers
Appel système / Fonctions
Orienté Objet
Exemples de CGI Socket
13. Gestion Fichiers exemple:copie du fichier toto dans titi. print "Voulez vous copier toto dans titi:"; if(<STDIN>=~ /(yes|oui)/i) { open(FILEW, ">>titi"); open(FILER, "toto"); while ($a=<FILER>) {print FILEW "ligne de toto $a";} close FILER; close FILEW; }
Historique / Caractéristiques
Installation / Début d’un programme
Variables / Structures de contrôle
Contrôle spéciaux
Expressions Rationnelles
Gestion Fichiers
Appel système / Fonctions
Orienté Objet
Exemples de CGI Socket
14. Appel système Exécution de programme System(«programme»);sortie <STDIN> `programme`sortie chaîne de caractère open(DESCRI,«|programme |»); entrée ou sortie pipe Gestion de processus fork(); exec(); wait(); waitpid(); exemple: #!/usr/bin/perlopen(LPR,«|lpr»); @mywho=`who`; foreach $_ (@mywho){ print LPR $_; } close LPR;
Historique / Caractéristiques
Installation / Début d’un programme
Variables / Structures de contrôle
Contrôle spéciaux
Expressions Rationnelles
Gestion Fichiers
Appel système / Fonctions
Orienté Objet
Exemples de CGI Socket
15. Fonctions
Définition sous Fonctions sub mafonction{ $_[0]; # premier argument@_; # tableau d’argument... return $var; return $var1,var2; }
Appel Sous Fonction $var / @tab = mafonction($first, $second); &myfunc (@list);
Toutes les variables sont globales. Contournementmy($variable_locale);
Historique / Caractéristiques
Installation / Début d’un programme
Variables / Structures de contrôle
Contrôle spéciaux
Expressions Rationnelles
Gestion Fichiers
Appel système / Fonctions
Orienté Objet
Exemples de CGI Socket
16. Fonctions (bis)
exemple: #!c:/perl/bin/perl -w$a=1; $b=2; $c=sum(); print " valeur de sum : $c n valeur de a: $a n"; sub sum{ my($a)=10; return $a+$b; }
Résultat: valeur de sum : 12 valeur de a: 1
Historique / Caractéristiques
Installation / Début d’un programme
Variables / Structures de contrôle
Contrôle spéciaux
Expressions Rationnelles
Gestion Fichiers
Appel système / Fonctions
Orienté Objet
Exemples de CGI Socket
17. Orienté Objet
Classe -> Package
Objet -> référence
exemplepackage Personne; my %champs=(nom=>undef,age=>undef,enfants=>undef); use Personne; $lui=new Personne; $lui->nom("Dupont"); $lui->age(30); $lui->enfants(["lucie","pierre"];
Historique / Caractéristiques
Installation / Début d’un programme
Variables / Structures de contrôle
Contrôle spéciaux
Expressions Rationnelles
Gestion Fichiers
Appel système / Fonctions
Orienté Objet
Exemples de CGI Socket
19. Un exemple cgi
Print Hello world
#!/usr/local/bin/perl
use CGI; # load CGI routines
$q = new CGI; # create new CGI object
print $q->header, # create the HTTP header
$q->start_html('hello world'),
# start the HTML
$q->h1('hello world'), # level 1 header
$q->end_html; # end the HTML
Historique / Caractéristiques
Installation / Début d’un programme
Variables / Structures de contrôle
Contrôle spéciaux
Expressions Rationnelles
Gestion Fichiers
Appel système / Fonctions
Orienté Objet
Exemples de CGI Socket
20. Un exemple cgi#!C:PERLbinperl.exeuse CGI ':standard'; $query = new CGI; print$query->header; print$query->start_html("Example CGI.pm Form"); print$query->h1('A Simple Example'); print$query-> start_form; print"What's your name? "; print$query-> textfield('name'),p; print"What's the combination?",p; print$query-> checkbox_group(-name=>'words', -values=>['key1','key2','key3','key4'], -defaults=>['key1','key3']);
Historique / Caractéristiques
Installation / Début d’un programme
Variables / Structures de contrôle
Contrôle spéciaux
Expressions Rationnelles
Gestion Fichiers
Appel système / Fonctions
Orienté Objet
Exemples de CGI Socket
21. Un exemple cgiprintp,"What's your favorite color? "; printpopup_menu(-name=>'color', -values=>['red','green','blue','chartreuse']),p; print$query->submit('Action','Send'); print$query->endform; printhr; if (param()) { print"Your name is: ",em(param('name')),p, "The keywords are: ",em(join(", ",param('words'))),p, "Your favorite color is: ",em(param('color')), hr; } printa({href=>'../cgi_docs.html'},'Go to the documentation'); printend_html;
Historique / Caractéristiques
Installation / Début d’un programme
Variables / Structures de contrôle
Contrôle spéciaux
Expressions Rationnelles
Gestion Fichiers
Appel système / Fonctions
Orienté Objet
Exemples de CGI Socket
22. Un exemple de socket Librairie Socket Tcp Client#!/usr/bin/perl -wuse Socket; $remote='localhost'; $port=8011; $iaddr=inet_aton($remote); $paddr=sockaddr_in($port,$iaddr); $proto=getprotobyname('tcp'); socket(SOCK,PF_INET,SOCK_STREAM,$proto); connect(SOCK,$paddr); while($ligne=<SOCK>) { print $ligne; } close (SOCK); exit;
Historique / Caractéristiques
Installation / Début d’un programme
Variables / Structures de contrôle
Contrôle spéciaux
Expressions Rationnelles
Gestion Fichiers
Appel système / Fonctions
Orienté Objet
Exemples de CGI Socket
23. Un exemple de socket TCP Serveur#!/usr/bin/perl -wuse Socket; $port=8011; $proto=getprotobyname('tcp'); socket(Serveur,PF_INET,SOCK_STREAM,$proto); setsockopt(Serveur,SOL_SOCKET,SO_REUSEADDR,pack("l",1)); bind(Serveur,sockaddr_in($port,INADDR_ANY)); listen(Serveur,SOMAXCONN); for(;$paddr=accept(Client,Serveur);close Client) {($portc,$iaddrcl)=sockaddr_in($paddr); $nom=gethostbyaddr($iaddrcl,AF_INET); print Client "Salut $nom coucoun"; } >>Salut localhost.localdomain coucou
Historique / Caractéristiques
Installation / Début d’un programme
Variables / Structures de contrôle
Contrôle spéciaux
Expressions Rationnelles
Gestion Fichiers
Appel système / Fonctions
Orienté Objet
Exemples de CGI Socket