Ce chapitre est un résumé des fonctions les plus importantes classées par catégorie. Pour avoir une liste complète triée par catégories, on se référera au Perl Reference Guide [2] en utilisant notamment la commande perldoc perlfunc, ou, pour obtenir directement la syntaxe de la fonction foo : perldoc -f foo6.1
Pour manipuler les listes, perl propose plusieurs fonctions.
Syntaxe : grep(EXPR, LIST)
Cette fonction évalue EXPR pour chaque élément de
LIST, en fixant la variable $_
à la valeur de cet
élément. Une modification de $_
à l'intérieur de
EXPR modifiera la valeur de l'élément correspondant de
LIST.
La valeur de retour est une liste contenant les éléments de LIST pour lesquels EXPR a retourné TRUE.
@elements = (1, 2, 3, 4, 5); @selection = grep($_ < 3, @elements); # -> (1, 2)
Syntaxe : map(EXPR, LIST)
Cette fonction évalue EXPR pour chaque élément de
LIST, en fixant la variable $_
à la valeur de cet
élément. Une modification de $_
à l'intérieur de EXPR modifiera la valeur de l'élément correspondant de LIST.
La valeur de retour est une liste contenant les résultats des évaluations de EXPR sur les éléments de LIST.
@elements = (1, 2, 3, 4, 5); @doubles = map($_ * 2, @elements); # -> (2, 4, 6, 8, 10)
Syntaxe : pop @ARRAY, shift @ARRAY
Ces fonctions extraient une valeur de la liste ou du tableau passé en paramètre. Dans le cas du tableau, elle le raccourcissent d'un élément et renvoient la valeur extraite.
Pour pop, c'est la dernière valeur de la liste qui est extraite, pour shift, la première valeur.
$valeur = pop(@elements); # -> $valeur = 5 # et @elements = (1, 2, 3, 4);
Syntaxe : push(@ARRAY, LIST), unshift(@ARRAY,LIST)
Ces fonctions effectuent l'opération inverse des précédentes : push va ajouter les éléments de LIST à ARRAY. unshift va insérer les éléments de LIST au début de ARRAY.
push(@elements, $valeur); # -> @elements = (1, 2, 3, 4, 5)
Syntaxe : reverse LIST
Dans un contexte de liste, cette fonction renvoie LIST dans l'ordre inverse sans modifier LIST.
Dans un contexte scalaire, elle renvoie le premier élément de LIST en ayant inversé ses caractères.
@elements = reverse(@elements); # -> @elements = (5, 4, 3, 2, 1) print "" . reverse(123); # -> 321
Syntaxe : sort [SUBROUTINE] LIST
Trie LIST et retourne la liste triée. SUBROUTINE peut être spécifiée pour changer la fonction de comparaison. C'est soit un nom de fonction utilisateur, soit un bloc, qui retourne une valeur négative, nulle ou positive, et qui s'applique aux variables $a et $b (pour des raisons d'optimisation).
Si aucune routine n'est spécifiée, le tri sera alphanumérique.
print sort { $a <=> $b } @elements; # -> (1, 2, 3, 4, 5)
Syntaxe : split PATTERN, EXPR [, LIMIT]
split va diviser la chaîne de caractères EXPR suivant le séparateur PATTERN, qui est une expression régulière.
Le paramètre optionnel LIMIT permet de fixer la taille maximale de la liste retournée.
Par exemple, la commande suivante va retourner les champs délimités par : :
@elements = split(/:/, $chaine);
Syntaxe : keys %
HASH
keys retourne une liste contenant les clés du tableau
associatif %
HASH.
Syntaxe : values %
HASH
values retourne une liste contenant les valeurs du tableau
associatif %
HASH.
Syntaxe : each %
HASH
each retourne une liste à deux éléments, contenant la
clé et la valeur pour l'élément suivant de %
HASH.
Quand le tableau associatif a été entièrement parcouru, un tableau nul
est retourné (ou la valeur undef dans un contexte scalaire).
Cette fonction est surtout utilisée dans le cas de très gros tableaux associatifs, où la place utilisée par la liste des clés serait trop importante.
Syntaxe : delete $
HASH{
KEY}
Efface la valeur spécifié du tableau %
HASH
spécifié. Retourne la valeur supprimée.
On retrouve les mêmes qu'en C, et qui respectent la même syntaxe :
$chaine = "Hello"; print substr($chaine, 2, 2); # -> "ll" substr($chaine, 2, 2) = "toto"; # $chaine -> "Hetotoo"
print index($chaine, "l"); # -> 2
D'autres fonctions sont également définies :
Donne la longueur de la chaîne passée en paramêtre.
Il effectue la concaténation de deux chaînes.
$var = $var . ".bak";
$clair = <STDIN>; # On récupère le deuxième champ (passwd) de la ligne correspondant à # l'uid ($<) de la personne exécutant le script $crypte = (getpwuid($<))[1]; $passwd = crypt($clair, $crypte);
print lc($chaine); # -> "hello"
On retrouve généralement les mêmes qu'en C, en particulier pour toutes les fonctions plus avancées, décrites dans le chapitre 9.