SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
Introduction à Perl(Pratical Extraction and Report language) (pathologically Eclectic Rubbish Lister) Mohamed Bouhamed
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Le cgi 
Header 
header();<HEAD> start_html(); <HTML> 
h1('some','contents'); <H1>some contents</H1> 
h1({-align=>left},'contents'); <H1ALIGN="LEFT">contents</H1> 
Liste radio_group();<INPUT TYPE="radio"> popup_menu();<SELECT NAME="toto" > checkbox();<INPUT TYPE="checkbox"> 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> 
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 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
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
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
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
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
Conclusions «Perl permetLa paresseL’impatienceet la démesure.»
Bibliographie Introduction à Perl, RL.Schwartz & T.Christiansem, O’reilly Programming Perl,L.Walls & RL.Schwartz O’reilly Sites «Picking up Perl» www.ebb.org www.perl.org www.activestate.com

Weitere ähnliche Inhalte

Was ist angesagt?

Javascript ne se limite pas à jquery
Javascript ne se limite pas à jqueryJavascript ne se limite pas à jquery
Javascript ne se limite pas à jqueryneuros
 
Coat::Persistent at FPW2009
Coat::Persistent at FPW2009Coat::Persistent at FPW2009
Coat::Persistent at FPW2009Alexis Sukrieh
 
Monitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et PinbaMonitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et PinbaPatrick Allaert
 
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINEIntroduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINEMarouan OMEZZINE
 
JavaScript prise en main et fondamentaux
JavaScript prise en main et fondamentauxJavaScript prise en main et fondamentaux
JavaScript prise en main et fondamentauxVincent Petetin
 
Qui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le codeQui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le codeDamien Seguy
 
Analyse statique et applications
Analyse statique et applicationsAnalyse statique et applications
Analyse statique et applicationsDamien Seguy
 
Communications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPCommunications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPjulien pauli
 
Partie 3: Contrôle d'Exécution — Programmation orientée objet en C++
Partie 3: Contrôle d'Exécution — Programmation orientée objet en C++Partie 3: Contrôle d'Exécution — Programmation orientée objet en C++
Partie 3: Contrôle d'Exécution — Programmation orientée objet en C++Fabio Hernandez
 
Top 10 chausse trappes
Top 10 chausse trappesTop 10 chausse trappes
Top 10 chausse trappesDamien Seguy
 
Interception de signal avec dump de la pile d'appel
Interception de signal avec dump de la pile d'appelInterception de signal avec dump de la pile d'appel
Interception de signal avec dump de la pile d'appelThierry Gayet
 
.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHPAbdoulaye Dieng
 
Zend Framework 2
Zend Framework 2Zend Framework 2
Zend Framework 2epixelic
 
PHP 1 - Apprendre les bases
PHP 1 - Apprendre les basesPHP 1 - Apprendre les bases
PHP 1 - Apprendre les basesPierre Faure
 
PHP - get started
PHP - get startedPHP - get started
PHP - get startedmazenovi
 
Formation PHP
Formation PHPFormation PHP
Formation PHPkemenaran
 
Modèle de domaine riche dans une application métier complexe un exemple pratique
Modèle de domaine riche dans une application métier complexe un exemple pratiqueModèle de domaine riche dans une application métier complexe un exemple pratique
Modèle de domaine riche dans une application métier complexe un exemple pratiqueVladyslav Riabchenko
 
Partie 10: Classes Génériques — Programmation orientée objet en C++
Partie 10: Classes Génériques — Programmation orientée objet en C++Partie 10: Classes Génériques — Programmation orientée objet en C++
Partie 10: Classes Génériques — Programmation orientée objet en C++Fabio Hernandez
 

Was ist angesagt? (19)

Javascript ne se limite pas à jquery
Javascript ne se limite pas à jqueryJavascript ne se limite pas à jquery
Javascript ne se limite pas à jquery
 
Coat::Persistent at FPW2009
Coat::Persistent at FPW2009Coat::Persistent at FPW2009
Coat::Persistent at FPW2009
 
Monitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et PinbaMonitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et Pinba
 
Php 5.3
Php 5.3Php 5.3
Php 5.3
 
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINEIntroduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
 
JavaScript prise en main et fondamentaux
JavaScript prise en main et fondamentauxJavaScript prise en main et fondamentaux
JavaScript prise en main et fondamentaux
 
Qui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le codeQui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le code
 
Analyse statique et applications
Analyse statique et applicationsAnalyse statique et applications
Analyse statique et applications
 
Communications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPCommunications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHP
 
Partie 3: Contrôle d'Exécution — Programmation orientée objet en C++
Partie 3: Contrôle d'Exécution — Programmation orientée objet en C++Partie 3: Contrôle d'Exécution — Programmation orientée objet en C++
Partie 3: Contrôle d'Exécution — Programmation orientée objet en C++
 
Top 10 chausse trappes
Top 10 chausse trappesTop 10 chausse trappes
Top 10 chausse trappes
 
Interception de signal avec dump de la pile d'appel
Interception de signal avec dump de la pile d'appelInterception de signal avec dump de la pile d'appel
Interception de signal avec dump de la pile d'appel
 
.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP
 
Zend Framework 2
Zend Framework 2Zend Framework 2
Zend Framework 2
 
PHP 1 - Apprendre les bases
PHP 1 - Apprendre les basesPHP 1 - Apprendre les bases
PHP 1 - Apprendre les bases
 
PHP - get started
PHP - get startedPHP - get started
PHP - get started
 
Formation PHP
Formation PHPFormation PHP
Formation PHP
 
Modèle de domaine riche dans une application métier complexe un exemple pratique
Modèle de domaine riche dans une application métier complexe un exemple pratiqueModèle de domaine riche dans une application métier complexe un exemple pratique
Modèle de domaine riche dans une application métier complexe un exemple pratique
 
Partie 10: Classes Génériques — Programmation orientée objet en C++
Partie 10: Classes Génériques — Programmation orientée objet en C++Partie 10: Classes Génériques — Programmation orientée objet en C++
Partie 10: Classes Génériques — Programmation orientée objet en C++
 

Ähnlich wie Per lameliorer

Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantHugo Hamon
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptAbdoulaye Dieng
 
Développement de plug in sous eclipse
Développement de plug in sous eclipseDéveloppement de plug in sous eclipse
Développement de plug in sous eclipseISIG
 
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !Paris Salesforce Developer Group
 
Comment écrire du code testable ?
Comment écrire du code testable ?Comment écrire du code testable ?
Comment écrire du code testable ?Fou Cha
 
Java 7 - Fork/Join
Java 7 - Fork/JoinJava 7 - Fork/Join
Java 7 - Fork/JoinZenika
 
C2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partieC2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partieLoic Yon
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVCNathaniel Richand
 
Mieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyMieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyHugo Hamon
 
Patterns and OOP in PHP
Patterns and OOP in PHPPatterns and OOP in PHP
Patterns and OOP in PHPjulien pauli
 
Service WEB de type REST avec Java
Service WEB de type REST avec JavaService WEB de type REST avec Java
Service WEB de type REST avec JavaFrancois ANDRE
 
Introduction au langage Go
Introduction au langage GoIntroduction au langage Go
Introduction au langage GoSylvain Wallez
 
Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !Olivier Le Goaër
 
Tester les applications Zend Framework
Tester les applications Zend FrameworkTester les applications Zend Framework
Tester les applications Zend FrameworkMickael Perraud
 
Introduction à Sinatra
Introduction à SinatraIntroduction à Sinatra
Introduction à SinatraRémi Prévost
 

Ähnlich wie Per lameliorer (20)

Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
 
Apache ANT
Apache ANTApache ANT
Apache ANT
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Développement de plug in sous eclipse
Développement de plug in sous eclipseDéveloppement de plug in sous eclipse
Développement de plug in sous eclipse
 
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
 
Comment écrire du code testable ?
Comment écrire du code testable ?Comment écrire du code testable ?
Comment écrire du code testable ?
 
Java 7 - Fork/Join
Java 7 - Fork/JoinJava 7 - Fork/Join
Java 7 - Fork/Join
 
Présentation nouveauté java7
Présentation nouveauté java7Présentation nouveauté java7
Présentation nouveauté java7
 
C2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partieC2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partie
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
 
Mieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyMieux Développer en PHP avec Symfony
Mieux Développer en PHP avec Symfony
 
Dynamic Languages
Dynamic LanguagesDynamic Languages
Dynamic Languages
 
Patterns and OOP in PHP
Patterns and OOP in PHPPatterns and OOP in PHP
Patterns and OOP in PHP
 
Service WEB de type REST avec Java
Service WEB de type REST avec JavaService WEB de type REST avec Java
Service WEB de type REST avec Java
 
Introduction au langage Go
Introduction au langage GoIntroduction au langage Go
Introduction au langage Go
 
Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !
 
Tester les applications Zend Framework
Tester les applications Zend FrameworkTester les applications Zend Framework
Tester les applications Zend Framework
 
Introduction à Sinatra
Introduction à SinatraIntroduction à Sinatra
Introduction à Sinatra
 
La première partie de la présentation PHP
La première partie de la présentation PHPLa première partie de la présentation PHP
La première partie de la présentation PHP
 
Spring 3.0
Spring 3.0Spring 3.0
Spring 3.0
 

Mehr von TECOS

Bouhamed vuejs-meetup-tecos
Bouhamed vuejs-meetup-tecosBouhamed vuejs-meetup-tecos
Bouhamed vuejs-meetup-tecosTECOS
 
D3 js-last
D3 js-lastD3 js-last
D3 js-lastTECOS
 
Summer internship
Summer internshipSummer internship
Summer internshipTECOS
 
Mohamed bouhamed - ccna2
Mohamed bouhamed  - ccna2Mohamed bouhamed  - ccna2
Mohamed bouhamed - ccna2TECOS
 
Mohamed bouhamed - ccna1
Mohamed bouhamed  -  ccna1Mohamed bouhamed  -  ccna1
Mohamed bouhamed - ccna1TECOS
 
Mobile certified
Mobile certifiedMobile certified
Mobile certifiedTECOS
 
Analytics certified
Analytics certifiedAnalytics certified
Analytics certifiedTECOS
 
Ad words certified
Ad words certifiedAd words certified
Ad words certifiedTECOS
 
Télémétrie d’openstack
Télémétrie d’openstackTélémétrie d’openstack
Télémétrie d’openstackTECOS
 
cloudu certification
cloudu certificationcloudu certification
cloudu certificationTECOS
 
Internship report
Internship reportInternship report
Internship reportTECOS
 
Gsm presntation
Gsm presntationGsm presntation
Gsm presntationTECOS
 
Td gsm iit
Td gsm iitTd gsm iit
Td gsm iitTECOS
 
Complément réseaux informatiques
Complément réseaux informatiquesComplément réseaux informatiques
Complément réseaux informatiquesTECOS
 
Cours réseauxs gsm
Cours réseauxs gsmCours réseauxs gsm
Cours réseauxs gsmTECOS
 
Cours sécurité 2_asr
Cours sécurité 2_asrCours sécurité 2_asr
Cours sécurité 2_asrTECOS
 
chapitre 1
chapitre 1chapitre 1
chapitre 1TECOS
 
Serveur web iit_asr_p2i
Serveur web iit_asr_p2iServeur web iit_asr_p2i
Serveur web iit_asr_p2iTECOS
 
Examen
Examen Examen
Examen TECOS
 

Mehr von TECOS (20)

Bouhamed vuejs-meetup-tecos
Bouhamed vuejs-meetup-tecosBouhamed vuejs-meetup-tecos
Bouhamed vuejs-meetup-tecos
 
D3 js-last
D3 js-lastD3 js-last
D3 js-last
 
Mta
MtaMta
Mta
 
Summer internship
Summer internshipSummer internship
Summer internship
 
Mohamed bouhamed - ccna2
Mohamed bouhamed  - ccna2Mohamed bouhamed  - ccna2
Mohamed bouhamed - ccna2
 
Mohamed bouhamed - ccna1
Mohamed bouhamed  -  ccna1Mohamed bouhamed  -  ccna1
Mohamed bouhamed - ccna1
 
Mobile certified
Mobile certifiedMobile certified
Mobile certified
 
Analytics certified
Analytics certifiedAnalytics certified
Analytics certified
 
Ad words certified
Ad words certifiedAd words certified
Ad words certified
 
Télémétrie d’openstack
Télémétrie d’openstackTélémétrie d’openstack
Télémétrie d’openstack
 
cloudu certification
cloudu certificationcloudu certification
cloudu certification
 
Internship report
Internship reportInternship report
Internship report
 
Gsm presntation
Gsm presntationGsm presntation
Gsm presntation
 
Td gsm iit
Td gsm iitTd gsm iit
Td gsm iit
 
Complément réseaux informatiques
Complément réseaux informatiquesComplément réseaux informatiques
Complément réseaux informatiques
 
Cours réseauxs gsm
Cours réseauxs gsmCours réseauxs gsm
Cours réseauxs gsm
 
Cours sécurité 2_asr
Cours sécurité 2_asrCours sécurité 2_asr
Cours sécurité 2_asr
 
chapitre 1
chapitre 1chapitre 1
chapitre 1
 
Serveur web iit_asr_p2i
Serveur web iit_asr_p2iServeur web iit_asr_p2i
Serveur web iit_asr_p2i
 
Examen
Examen Examen
Examen
 

Kürzlich hochgeladen

CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptCHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptbentaha1011
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSKennel
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).FatimaEzzahra753100
 
Chapitre 2 : fondations et analyses de données géotechniques
Chapitre 2 : fondations et analyses de données géotechniquesChapitre 2 : fondations et analyses de données géotechniques
Chapitre 2 : fondations et analyses de données géotechniquesangevaleryn
 
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfActions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfalainfahed961
 
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...maach1
 
Support de cours La technologie WDM.pptx
Support de cours La technologie WDM.pptxSupport de cours La technologie WDM.pptx
Support de cours La technologie WDM.pptxdocteurgyneco1
 

Kürzlich hochgeladen (9)

CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptCHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).
 
Chapitre 2 : fondations et analyses de données géotechniques
Chapitre 2 : fondations et analyses de données géotechniquesChapitre 2 : fondations et analyses de données géotechniques
Chapitre 2 : fondations et analyses de données géotechniques
 
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfActions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
 
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
 
Note agro-climatique n°2 - 17 Avril 2024
Note agro-climatique n°2 - 17 Avril 2024Note agro-climatique n°2 - 17 Avril 2024
Note agro-climatique n°2 - 17 Avril 2024
 
Support de cours La technologie WDM.pptx
Support de cours La technologie WDM.pptxSupport de cours La technologie WDM.pptx
Support de cours La technologie WDM.pptx
 
CAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptxCAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptx
 

Per lameliorer

  • 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
  • 18. Le cgi Header header();<HEAD> start_html(); <HTML> h1('some','contents'); <H1>some contents</H1> h1({-align=>left},'contents'); <H1ALIGN="LEFT">contents</H1> Liste radio_group();<INPUT TYPE="radio"> popup_menu();<SELECT NAME="toto" > checkbox();<INPUT TYPE="checkbox"> 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> 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
  • 24. Conclusions «Perl permetLa paresseL’impatienceet la démesure.»
  • 25. Bibliographie Introduction à Perl, RL.Schwartz & T.Christiansem, O’reilly Programming Perl,L.Walls & RL.Schwartz O’reilly Sites «Picking up Perl» www.ebb.org www.perl.org www.activestate.com