Memo Perl

De Avided.info
Aller à : navigation, rechercher


LES VARIABLES

scalaire         $ $cents Une valeur propre (nombre, chaîne).
tableau         @ @large Une liste de valeurs, indexées par numéro.
hachage         % %interet Un groupe de valeurs indexées par chaîne.
sous-programme     & &comment Un bout de code Perl appelable.
typeglob         * *truc Tout ce qui est appelé truc.

Scalaire $

$reponse = 42;                         # un entier
$pi = 3.14159265;                     # un nombre "réel"
$avocats = 6.02e23;                 # notation scientifique
$animal = "Chameau";                 # chaîne
$signe = "Mon $animal et moi";         # chaîne avec interpolation
$cout = ’Cela coûte $100’;             # chaîne sans interpolation
$pourquoi = $parceque;                 # une autre variable
$x = $taupes * $avocats;             # une expression
$exit = system("vi $x");             # code de retour d’une commande
$cwd = `pwd`;                         # chaîne générée par une commande
$ary = \@montableau;                 # référence à un tableau nommé
$hsh = \%monhachage;                 # référence à un hachage nommé
$sub = \&monsousprog;                 # référence à un sous-programme
$ary = [1,2,3,4,5];                 # référence à un tableau anonyme
$hsh = {Na=>19, Cl=>35};             # référence à un hachage anonyme
$sub = sub { print $pays };         # référence à un sous-programme anonyme
$fido = new Chameau "Amelia";         # référence à un objet
[/code]

scalaire au pluriel

($alpha,$omega) = ($omega,$alpha);                                 # inverser le contenu de vairable
($Procuste, $porteurs, $multiplication, $gratter) = @maison;     # Initialiser plusieurs scalaire depuis un tableau

Tableau @

# Initialiser des valeurs dans un tableau
@maison = ("lit", "chaise", "table", "poele"); # elles sont positionner automatiquement

Cette methode positionne les valeurs dans les containaires du tableau designé.
Cela permet aussi d'ecrasser des valeurs
$maison[0] = "lit";
$maison[1] = "chaise";
$maison[2] = "table";
$maison[3] = "poele";

idem
($Procuste, $porteurs, $multiplication, $gratter) = @maison;

Hachage %

%longjour = ("Dim", "Dimanche", "Lun", "Lundi", "Mar", "Mardi",
"Mer", "Mercredi", "Jeu", "Jeudi", "Ven",
"Vendredi", "Sam", "Samedi");

Même chose, mais plus lisible
%longjour = (
"Dim" => "Dimanch",
"Lun" => "Lundi",
"Mar" => "Mardi",
"Mer" => "Mercredi",
"Jeu" => "Jeudi",
"Ven" => "Vendredi",
"Sam" => "Samedi",
);

Changer la valeur d'un element d'un hachage
on remarque que ce sont des scalaire.
$longjour{"Dim"} = "Dimanche";

Tableau anonyme

$femme{"Jacob"} = ["Léa", "Rachel", "Bilha", "Zilpa"];
meme chose . on remarque qu
$femme{"Jacob"}[0] = "Léa";
$femme{"Jacob"}[1] = "Rachel";
$femme{"Jacob"}[2] = "Bilha";
$femme{"Jacob"}[3] = "Zilpa";

$filsDesFemmesDe{"Jacob"} = {
"Léa" => ["Ruben", "Siméon", "Lévi", "Juda", "Issachar", "Zabulon"],
"Rachel" => ["Joseph", "Benjamin"],
"Bilha" => ["Dan", "Nephtali"],
"Zilpa" => ["Gad", "Aser"],
};

equivalent a

$fils_des_femmes_de{"Jacob"}{"Léa"}[0] = "Ruben"; $fils_des_femmes_de{"Jacob"}{"Léa"}[1] = "Siméon"; $fils_des_femmes_de{"Jacob"}{"Léa"}[2] = "Lévi"; $fils_des_femmes_de{"Jacob"}{"Léa"}[3] = "Juda"; $fils_des_femmes_de{"Jacob"}{"Léa"}[4] = "Issachar"; $fils_des_femmes_de{"Jacob"}{"Léa"}[5] = "Zabulon"; $fils_des_femmes_de{"Jacob"}{"Rachel"}[0] = "Joseph"; $fils_des_femmes_de{"Jacob"}{"Rachel"}[1] = "Benjamin"; $fils_des_femmes_de{"Jacob"}{"Bilha"}[0] = "Dan"; $fils_des_femmes_de{"Jacob"}{"Bilha"}[1] = "Nephtali"; $fils_des_femmes_de{"Jacob"}{"Zilpa"}[0] = "Gad";

$fils_des_femmes_de{"Jacob"}{"Zilpa"}[1] = "Aser";

LES HANDELS

Handel de fichier

open(SESAME, "nomdefichier");             # lire depuis un fichier existant
open(SESAME, "
open(SESAME, ">nomdefichier ");         # créer un fichier et y écrire
open(SESAME, ">>nomdefichier ");         # ajouter à un fichier existant
open(SESAME, "| sortie_de_commande");     # mettre en place un filtre de sortie
open(SESAME, "entrée de commande |");     # mettre en place un filtre d’entrée

Handel speciaux

 interactivité de l'utilisateur
print STDOUT "Entrez un nombre : ";     # demander un nombre
$nombre = ;                         # entrer le nombre
print STDOUT "Le nombre est $nombre\n"; # afficher le nombre

Calcules et Opérateurs

Opérateurs arithmétique BINAIRE

$a + $b     Addition Somme de $a et de $b.
$a * $b     Multiplication Produit de $a et de $b.
$a % $b     Modulo Reste de $a divisé par $b.
$a ** $b     Puissance $a puissance $b.

si le signe est avant donne la valeur modifier
si le signe est apres donne la valeur non modifié, puis modifie  
++$a, $a++ Autoincrémentation Ajouter 1 à $a.
--$a, $a-- Autodécrémentation Soustraire 1 de $a.

Opérateur sur les CHAINES

$a = 123;
$b = 3;
print $a x $b; # affiche 123123123

Opérateur Logique

$a && $b     Et     $a si $a est faux, $b sinon.
$a || $b     Ou     $a si $a est vrai $b sinon.
! $a         Non Vrai si $a n’est pas vrai.
$a and $b     Et $a si $a est faux, $b sinon.
$a or $b     Ou $a si $a est vrai, $b sinon.
not $a         Non Vrai si $a n’est pas vrai.
$a xor $b     Ou exclusif Vrai si $a ou $b est vrai, mais pas les deux.

Opérateur comparaison

égal                 == eq Vrai si $a est égal à $b.
Différent             != ne Vrai si $a n’est pas égal à $b.
Inférieur à         < lt Vrai si $a est plus petit que $b.
Supérieur à         > gt Vrai si $a est plus grand que $b.
Inférieur ou égal à <= le Vrai si $a est inférieur ou égal à $b.
Supérieur ou égal à >= ge Vrai si $a est supérieur ou égal à $b.
Comparaison          cmp 0 si égal, 1 si $a sup., -1 si $b sup.

Operateur de test de fichier

-e $a Existe     Vrai si le fichier nommé par $a existe.
-r $a Lecture     Vrai si le fichier nommé par $a est accessible en lecture.
-w $a Écriture     Vrai si le fichier nommé par $a est accessible en écriture.
-d $a Répertoire Vrai si le fichier nommé par $a est un répertoire.
-f $a Fichier     Vrai si le fichier nommé par $a est un fichier régulier.
-T $a Fichier texte Vrai si le fichier nommé par $a est un fichier texte.

Structure de controle

IF

if ($var eq "chaine") {
print "$var est equivalant a chaine\n";
}
elsif ($var eq "chaine1") {
print "$var est equivalant a chaine2.\n";
}
else {
print "Je ne reconnait pas.\n";
}