perl -v : sous Unix (5.8.9 version + stable)



- ActiveState.com > ActivePerl : la dernière version disponible est gratos
- Perl Package Manager : (fourni lors du dl ActivePerl) est un petit programme complémentaire qui permet de gérer toutes les bibliothèques disponibles pour Perl à travers une interface graphique



Perl est associé à une commande Unix, on invoque : perl nom_du_pg_à_exe.pl



On a quelquefois plusieurs versions de Perl sur nos machines, dans ce cas on invoque directement les versions disponibles sous Unix.


0. Notions initiales:

#!/usr/bin/perl;			# shebang

Cette première ligne est inactive sous Windows car elle fait référence à un chemin relatif, sous Unix elle permet de spécifier que Perl sera invoqué lorsqu'on va exécuter le script.
Toutes les lignes qui commencent par # sont des commentaires.
Toutes les commandes perl se terminent par ;


print;					# commande qui affiche quelquechose
print QUELQUEPART «quelquechose»;
print STDOUT "Hello world!\n";		# STDOUT correspond à la sortie écran (par défaut, inutile de préciser)
chmod -x script.pl			# rend un script exécutable sous Unix

1. Variables scalaires:

Ce sont des variables de base qui contiennent des valeurs numériques, des chaînes de caractères, (des références). Toutes les variables scalaires ont un nom qui commence par $ .
En Perl la notion de typage n'existe pas: on définit directement une variable de type chaîne de caractères sans avoir besoin de prédéfinir le type.
/!\
my permet de limiter la portée lexicale de la variable utilisée, qui ne va exister que dans certaines zones du programme.

my($x,@y) 				# on définit ici une liste anonyme comprenant une scalaire et une liste
my($x,@y)=(un,deux,trois);
>>> $x=un
>>> @y=(deux,trois)


2. Listes de scalaires /Tableaux de scalaires
push fonction qui modifie la liste en ajoutant des éléments à la fin (et renvoie à une valeur).
La valeur qu'elle renvoie en tant que fonction est le nombre d'éléments de la liste (=empile en commençant par la fin/la droite)
pop enlève le dernier élément de la liste et le renvoie
shift supprime le premier élément de la liste et le renvoie (=dépile par le début/la gauche). Exemple:
@table=(un,deux,trois,cinq);
$var=shift @table;
>>> $var=un
>>> @table=(deux,trois,cinq)
unshift permet d'ajouter dans un tableau un élément en première position
delete supprime un élément particulier dans le tableau et le renvoie
3. Tableau associatif /Table de hashage /Hash (contient des clés et à chaque clé va être associée une valeur)
keys fonction qui va chercher toutes les clés de la table de hashage et les renvoie sous forme de liste
values fonction qui va chercher toutes les valeurs de la table de hashage et les renvoie sous forme de liste
delete supprime une clé (et donc la valeur) dans une table de hashage
exists vérifie l'existence d'une clé dans une table de hashage (booléen)

4. Lire un fichier:

→ Pour lire un fichier, il faut l'ouvrir ! FILE est un pointeur de fichier
Si je veux interroger le fichier, j'utilise le pointeur de fichier FILE qui va permettre d'acceder aux données du fichier
Par défaut, la lecture d'un fichier en Perl se fait ligne par ligne.
→ En Perl, il y a une variable scalaire prédéfinie: $\ . Par défaut, elle est associée à la valeur: \n . Si on veut lire le fichier autrement, il suffit de modifier cette variable là…
→ Pour appeler un fichier via le Terminal:

$ARVG[0] 	# désigne le premier élément des arguments passés à un programme
@ARGV 		# désigne la liste des arguments passés à un programme

5. Utilisation des RegExp en Perl:

Rechercher une chaîne de caractères en Perl
=~/motif/ le motif est souvent sous forme de regexp
$texte=~/^attaque/ si ce motif est présent dans cette chaîne, l'expression est VRAIE
$texte=~/^Spéciale/i les options se mettent après le 2ème slash, ici, indépendamment de sa casse (l'opérateur -i ne distingue pas min/Maj)
$texte=~/^Poilsdenez/gi l'opérateur -g permet de se ballader sur toutes les occurrences présentes dans une ligne
Rechercher et remplacer une chaîne de caractères
$texte=~s/$motif// ici, on remplace le motif par rien
$texte=~s/\W+// pour un découpage propre, on recherche des non-caractères de mot qu'on remplace par rien
Concordance
$` correspond au contexte gauche du motif trouvé
$& correspond au motif recherché
$' correspond au contexte droit du motif trouvé

There is more than one way to do it...

Outils