Powered by |
Notes formation PerlMichel Casabianca - michel.casabianca@gmail.com
Je suis en train de suivre une formation Perl et voici, en vrac, mes notes qui regroupent les points surprenants de ce langage. Contextes d'évaluationContexte scalaire :
Contexte liste :
TableauxLa taille d'un tableau :
La tranche ne comprend que le premier et le dernier :
Indice du dernier élément :
Test si tableau non vide :
Test si arguments :
Faire une boucle 10 fois :
Itérer tableau :
Sans variable d'élément, c'est $_ qui reçoit la valeur. Si on modifie la variable, on modifie le tableau (c'est une référence vers un élément du tableau). Tableaux associatifsChanger la valeur d'une map :
Définir une map :
Itérer une map :
ou
On récupère la liste des valeurs avec values(). On efface une valeur avec :
Tester la présence d'une clé :
Note Deux variables de type différents peuvent avoir le même nom. Par exemple :
cet exemple transforme le tableau associatif en un tableau avec éclatement clé-valeur. RéférencesElles permettent des structures de données complexes (des tableaux dans des tableaux par exemple) :
On obtient donc une référence avec l'opérateur \ (antislash) et cette référence est un scalaire. On obtient la valeur de cette référence avec l'opérateur $ (dollar). Pour les tableaux, on peut accéder aux valeurs avec l'opérateur -> (flèche). On peut directement créer une référence vers une liste avec la notation :
On met des crochets à la place des parenthèses. Expressions RégulièresEntre slashs : /regexp/. On peut faire un grep en Perl:
Ou
Autres caractères interprètés :
Substitution :
Ajouter g après l'expression pour remplacer toutes les occurences. Modificateurs d'expression :
Remplacer les chiffres par des X dans un fichier :
Exemples Regexp en ligne de commandeTrouver les lignes où le 4e caractère est le même que le second :
Mettre des parenthèses autour de toutes les lignes : Trouver les lignes où le 4e caractère est le même que le second :
Options en ligne de commande :
Split et join
Bible des regexps :
FonctionsLes paramètres ne sont pas déclarés dans la signature de la méthode :
Les arguments sont accessibles dans @_. On peut modifier ces paramètres, mais c'est à éviter. Lors de l'appel à une fonction, on peut faire précéder son nom d'un &, mais c'est une survivance de Perl 4. On aura intérêt à passer les tableaux par référence et nom pas par valeur. On affecte souvent les paramètres dans des variables locales :
Une fonction Perl ne peut retourner qu'un scalaire ou une liste. Pour renvoyer une map, on retournera une référence vers cette map ou on le passera à la fonction qui la modifiera. La majorité des fonctions Perl modifient leurs arguments et renvoient une valeur. La fonction wantarray indique si l'on est en contexte scalaire (false) ou liste (true). VariablesUne variable locale dans le bloc où elle est déclarée avec my. Le mot clé local déclare une variable qui est connue aussi des fonctions appelées (à ne pas utiliser donc). DocumentationSite web Perl ou en ligne de commande :
Entrées / SortiesOuverture d'un fichier avec :
Le descripteur de fichier est DESC. Les modes d'ouverture de fichiers sont les suivants :
Lecture par l'opérateur < DESC > :
Pour passer un descripteur de fichier à une de nos fonctions, il faut lui passer une référence, notée avec une étoile *. Par exemple :
L'opérateur diamant <> permet de lire tous les fichiers passés sur la ligne de commande. Donc pour lire toutes les lignes de ces fichiers, on fera :
Il existe des opérateurs qui travaillent sur les fichiers comme la fonction Unix test. Par exemple, pour avoir la taille d'un fichier, on écrira :
On peut avoir des infos sur les fichiers avec la fonction stat. Par exemple :
A noter que les parenthèses autour de l'appel à stat sont nécessaires pour pouvoir prendre une tranche d'une liste retournée par une appel de fonction. Données littéralesPour écrire dans un fichiers, avec évaluation des variables :
Pour faire la même chose sans évaluer les variables :
On peut ajouter des données en fin de fichier après la déclaration __END__. On peut accéder à ces données avec le descripteur de fichier <DATA>. Programmation Orientée ObjetLe constructeur s'appelle souvent new() mais ce n'est pas obligatoire.
TrisPar défaut, les tris sont lexicographiques :
Pour trier en ordre numérique :
Dernière mise à jour : 2014-06-13 |