per lameliorer

25
Introduction à Perl (Pratical Extraction and Report language) (pathologically Eclectic Rubbish Lister) Mohamed Bouhamed

Upload: bouhamed-mohamed

Post on 18-Jul-2015

66 views

Category:

Engineering


0 download

TRANSCRIPT

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, 1ere version 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.5 SuSE 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/NTwww.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 0eme de @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 redo ici 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 [ \n\t\n\f] | 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 standard STDOUT 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/perl

open(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.

Contournement my($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/perluse 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:\PERL\bin\perl.exe

use 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 cgiprint 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;

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 -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 TCP Serveur#!/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 coucou\n"; }

>>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 permet

La paresse

L ’impatience

et 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