Introduction Perl Pratical Extraction and Report language pathologically

  • Slides: 25
Download presentation
Introduction à Perl (Pratical Extraction and Report language) (pathologically Eclectic Rubbish Lister) Magali Sauvergeat

Introduction à Perl (Pratical Extraction and Report language) (pathologically Eclectic Rubbish Lister) Magali Sauvergeat

Sommaire n n n Historique / Caractéristiques Installation / Début d ’un programme Variables

Sommaire n n n 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

Historique / Caractéristiques Installation / Début d ’un programme Variables / Structures de contrôle

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 En 1987, 1 ere version par Larry Wall. n Inspiré de Awk, sed, sh, C. n n langage naturelle. n Il y a plus d’une façon de le faire. TIM-toady. n Perl rend le travail simple, facile et le travail difficile possible. n Le couteau suisse des chaînes. n Aujourd’hui Version 5.

Caractéristiques n Points positifs: n Rapide/efficace pour programmer n Grand nombre de possibilités n

Caractéristiques n Points positifs: n Rapide/efficace pour programmer n Grand nombre de possibilités n Portable n Points négatifs: n difficilement réutilisable n s’écrit en un unique fichier n 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

Historique / Caractéristiques Installation / Début d ’un programme Variables / Structures de contrôle

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 Installation n n Linux par défaut sur: · Debian version 2. 1 Red. Hat version 6. 0 · Slackware version 2. 5 Su. SE version 6. 0 Unix n n n Macintosh n n par défaut sur: Aix 4. 3. 3. Solaris 8 IRIX pour HPUX SCO : source (www. perl. com/CPAN-local/src/5. 0/) www. macperl. com Windows 9 x/NT www. activestate. com/download/Active. Perl/Windows/5. 6/

Début d ’un programme n Options de compilation: n n n Historique / Caractéristiques

Début d ’un programme n Options de compilation: n n n 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 #!usr/bin/Perl - w : warning #!c: /Perl/bin/Perl - d : debug Librairies comme #include n Use CGI; n n n CGI : librairie pour accès web SQL : librairie pour accéder à une base SQL Socket: égal socket. h

Variables n variable scalaire n $variable n n n Tableau n @tab n n

Variables n variable scalaire n $variable n n n Tableau n @tab n n $variable= « Hello World » ; $variable=25; $tab[0]: Valeur 0 eme de @tab. table de hashage. n %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

Structures de contrôle n Conditions n n Historique / Caractéristiques Installation / Début d

Structures de contrôle n Conditions n n 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 If ( expression ){}else{} Unless ( expression ){} $val=(expression ? truevalue : falsevalue); boucles n n do{}while/until (expression ) For{exp_initiale; test_exp; increm_exp }() while(test_exp)() foreach $i (@liste){}

Contrôle spéciaux n last : n branchement après la boucle n n While(exp 1){

Contrôle spéciaux n last : n branchement après la boucle n n While(exp 1){ if( exp 2 ){ last; }} #saut last ici next: n branchement en fin de boucle. n n 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 While(exp 1){ if( exp 2 ){ next; } truc; #saut next ici} redo: n branchement en début de boucle n While(exp 1){#saut redo ici truc; if( exp 2 ){redo; }}

Expressions Rationnelles n Historique / Caractéristiques Installation / Début d ’un programme Variables /

Expressions Rationnelles n 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 Motifs. n ’importe quel lettre sauf n. s caractères espace [ ntnf] | inverse S w : caractères de mots [a-z. A-Z 0 -9] | inverse W d : chiffres [0 -9] | inverse D /i : ignorer la case. [^. . . ] : négation des caractères du crochet. n Ancrage ^ : correspond au début de ligne.

Expressions Rationnelles (bis) n n Historique / Caractéristiques Installation / Début d ’un programme

Expressions Rationnelles (bis) n n 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 Alternatif : "|" correspond à un ou. Multiplicatif * , 0 ou n fois + , 1 ou n fois ? , 0 ou 1 fois le n Utilisations n n n /pattern/option n if ( $a =~ /^bon/ i) vrai si $a commence par bon ou Bon s/pattern/replace/option n $wi= ~ s/y/x/g : remplace toute les y dans wi par x. Split n @tab= split(/: /, $v) : coupe la chaîne $v suivant le délimiteur « : » et le stocke dans tab.

Gestion Fichiers n Descripteurs n n STDOUT sortie standard Fonction open n n STDIN

Gestion Fichiers n Descripteurs n n STDOUT sortie standard Fonction open n n STDIN entrée standard 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 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 (DES); ferme le descripteur de fichier

Gestion Fichiers n exemple: copie du fichier toto dans titi. Historique / Caractéristiques Installation

Gestion Fichiers n exemple: copie du fichier toto dans titi. 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 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

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 Appel système n Exécution de programme n n sortie <STDIN> sortie chaîne de caractère entrée ou sortie pipe Gestion de processus n n n System( « programme » ); `programme` open(DESCRI , «|programme |» ); fork(); exec(); waitpid(); exemple: #!/usr/bin/perl open(LPR, « |lpr » ); @mywho=`who`; foreach $_ (@mywho){ print LPR $_; } close LPR;

Fonctions n Définition sous Fonctions n Historique / Caractéristiques Installation / Début d ’un

Fonctions n Définition sous Fonctions n 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 sub mafonction{ $_[0]; # premier argument @_; # tableau d ’argument. . . return $var; return $var 1, var 2; } n n Appel Sous Fonction n $var / @tab = mafonction($first, $second); n &myfunc (@list); Toutes les variables sont globales. n Contournement my($variable_locale);

Fonctions (bis) n exemple: #!c: /perl/bin/perl -w $a=1; $b=2; $c=sum(); print " valeur de

Fonctions (bis) n 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; } n n Résultat: n n 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

Orienté Objet n n Historique / Caractéristiques Installation / Début d ’un programme Variables

Orienté Objet n n 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 Classe -> Package Objet -> référence n exemple package 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

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 Le cgi n Header n n n header(); start_html(); h 1('some', 'contents'); h 1({-align=>left}, 'contents'); <HEAD> <HTML> <H 1>some contents</H 1> <H 1 ALIGN="LEFT">contents</H 1> Liste n radio_group(); <INPUT TYPE="radio"> n popup_menu(); <SELECT NAME="toto" > n checkbox(); <INPUT TYPE="checkbox"> n textarea(); <INPUT TYPE="text" > scrolling_list( -name=> ’toto', -Values=>[England, France, ] , -Labels=>{England=>"EN", France=>"FR", } , -size=>1, -multiple=>0); <SELECT NAME="toto" SIZE=1> <OPTION VALUE=" England">EN <OPTION VALUE="France">FR</SELECT>

Un exemple cgi n Historique / Caractéristiques Installation / Début d ’un programme Variables

Un exemple cgi n 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 Print Hello world #!/usr/local/bin/perl use CGI; $q = new CGI; print $q->header, $q->start_html('hello # load CGI routines # create new CGI object # create the HTTP header world'), # start the HTML $q->h 1('hello world'), # level 1 header $q->end_html; # end the HTML

Un exemple cgi Historique / Caractéristiques Installation / Début d ’un programme Variables /

Un exemple cgi 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 #!C: PERLbinperl. exe use CGI ': standard'; $query = new CGI; print $query->header; print $query->start_html("Example CGI. pm Form"); print $query->h 1('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=>['key 1', 'key 2', 'key 3', 'key 4'], -defaults=>['key 1', 'key 3']);

Un exemple cgi Historique / Caractéristiques Installation / Début d ’un programme Variables /

Un exemple cgi 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 print p, "What's your favorite color? "; print popup_menu(-name=>'color', -values=>['red', 'green', 'blue', 'chartreuse']), p; print $query->submit('Action', 'Send'); print $query->endform; print hr; 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; } print a({href=>'. . /cgi_docs. html'}, 'Go to the documentation'); print end_html;

Un exemple de socket n Librairie Socket n Tcp Client #!/usr/bin/perl -w use Socket;

Un exemple de socket n Librairie Socket n Tcp Client #!/usr/bin/perl -w use 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

Un exemple de socket n TCP Serveur Historique / Caractéristiques Installation / Début d

Un exemple de socket n TCP Serveur 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 #!/usr/bin/perl -w use 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

Conclusions « Perl permet La paresse L ’impatience et la démesure. »

Conclusions « Perl permet La paresse L ’impatience et la démesure. »

Bibliographie n Introduction à Perl, RL. Schwartz & T. Christiansem, O ’reilly Programming Perl,

Bibliographie n Introduction à Perl, RL. Schwartz & T. Christiansem, O ’reilly Programming Perl, L. Walls & RL. Schwartz O ’reilly n n Sites n n n « Picking up Perl » www. ebb. org www. perl. org www. activestate. com