Programmation Perl
Fiche N°2
Opérateurs
Arithmétiques : 	+  -  /  *  % **	Booléens :	!  && || not and or 
Concaténation : 	.	Bit à bit : 	| & ~ ^
Affectation : 	=  +=  -=  *=  /=  .=
In/décrémentation :	++ --
Comparaison :	<  >  >=  <=  <=>	Comparaison alphabétique : lt  gt  le  ge
Egalité : 	== != 	Egalité alphabétique : eq ne cmp
Conditionnel : 	? :
Intervalle : 	..
Répétition : 	x

Exemples : 
Incrémentation
$num=3 + "2";
$num++;
@l=(3,4);
$a="foo"+3+"2"+@l;	# le typage dépend du contexte d'évaluation
$b="foo".(3)."2";
$chaine="bla"x3;
$chaine++;

L'affectation produit une lvalue (élément affectable) correspondant à la variable affectée
$a=1;
($a+=3)*=2**2 ;
Structures de contrôle (conditionnelles et boucles)
if ( condition ) {
	bloc1
} elsif ( autre condition ) {
	bloc2
} else {
	bloc2
}
	unless ( condition ) {
	bloc
}

ou 

{ bloc } unless (condition);	
while ( condition ) {
	bloc
}	until ( condition ) {
	bloc
}
ou 
{ bloc } until ( condition);	
for ($i=0; $i <= $max; $i++) {
	bloc
}	foreach $element (@liste ) {
	bloc
}	
Chaînes littérales
Les chaînes littérales peuvent être exprimées entre " ou entre ' , mais également entre q{} ou qq{}
Ecriture des caractères spéciaux :

\t	tabulation (HT, TAB)
\n	nouvelle ligne (LF, NL)
\r	retour chariot (CR)
\f	page suivante (FF)
\a	alarme (bip) (BEL)
\e	escape (ESC)
\033	caractère exprimé en octal (ESC)
\x1B	caractère exprimé en hexadécimal  (ESC)
\x{236a}	caractère exprimé hexadécimal long (SMILEY)
\c[	caractère de contrôle (ESC)
\N{nom}	caractère nommé

L'interpolation des variables

A l'intérieur d'une chaîne de caractère littérale, exprimée entre guillemets droits " ", les variables sont interpolées (c'est-à-dire remplacées par leur valeur). Les éléments de listes interpolées sont séparés par un blanc.

@l=(); push(@l,1,2,3,4);
$long=@l;
print "La liste (@l) comporte $long éléments. Le premier élément est $l[0]\n";

Attention : pour qu'il y ait interpolation, il faut que l'identificateur soit suivi d'un espace ou d'une ponctuation ou de la fin de chaîne. Pas d'interpolation pour les hashes complets.

print "La liste (@l) comporte $longéléments\n"; # ne marche pas

Réécrire la ligne ci-dessus sans recourir à l'interpolation.
Fonctions
La déclaration d'une fonction suit la syntaxe suivante :

sub nomDeFonction {
	my ($arg1, $arg2, $arg3, … , $argn) =@_;
	
	bloc
	return valeur;
}

Les arguments sont passés grâce à la liste @_
Ils peuvent par conséquent être en nombre variable : la déclaration de la fonction n'impose pas des arguments prédéfinis.
Perl n'effectue pas de différence formelle entre procédure et fonction : le retour d'une valeur grâce à l'instruction return est facultatif.

Attention : toutes les variables locales utilisées par une fonction doivent être déclarées avec le mot réservé my. Dans le cas contraire, la fonction pourrait écraser de manière indésirable, les valeurs des variables utilisées par le programme qui l'appelle.

Exercice : Ecrire une fonction membre(ELT, LISTE) testant l'appartenance d'un scalaire à une liste (valeurs de retour booléenne : 0 ou 1).

Des informations sur les fonctions Perl peuvent être obtenues à l'adresse suivante :
Documentation de référence : http://www.enstimac.fr/Perl/DocFr.html
Perl pour les CGI : http://selfhtml.selfhtml.com.fr/cgiperl/langage/index.htm