next up previous contents index
suivant: 7. Le format de monter: perl précédent: 5. Les expressions régulières   Table des matières   Index

Sous-sections


6. Les fonctions classées par catégorie

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

6.1 Les fonction de manipulation de listes

Pour manipuler les listes, perl propose plusieurs fonctions.

6.1.1 grep

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)

6.1.2 map

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)

6.1.3 pop, shift

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);

6.1.4 push, unshift

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)

6.1.5 reverse

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

6.1.6 sort

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)

6.1.7 split

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);

6.2 Les fonctions sur les tableaux associatifs

6.2.1 keys

Syntaxe : keys %HASH

keys retourne une liste contenant les clés du tableau associatif %HASH.

6.2.2 values

Syntaxe : values %HASH

values retourne une liste contenant les valeurs du tableau associatif %HASH.

6.2.3 each

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.

6.2.4 delete

Syntaxe : delete $HASH{KEY}

Efface la valeur spécifié du tableau %HASH spécifié. Retourne la valeur supprimée.

6.3 Les fonctions de manipulation de chaînes de caractères

On retrouve les mêmes qu'en C, et qui respectent la même syntaxe :

substr
Retourne la sous-chaîne délimitée par les index fournis en paramètre. Note: elle peut être utilisé comme lvalue (ie affectée).

$chaine = "Hello";
print substr($chaine, 2, 2);
# -> "ll"
substr($chaine, 2, 2) = "toto";
# $chaine -> "Hetotoo"

index, rindex
Retourne la position de la première (resp. dernière) occurrence d'une sous-chaîne dans une chaîne de caractères.

print index($chaine, "l");
# -> 2

D'autres fonctions sont également définies :

length

Donne la longueur de la chaîne passée en paramêtre.

l'opérateur . (point)

Il effectue la concaténation de deux chaînes.

$var = $var . ".bak";

crypt(PLAINTEXT, SALT)
Encrypte la chaîne passée en argument.

$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);

lc, lcfirst, uc, ucfirst
Opérations sur la casse de la chaîne. lc passe la chaîne en minuscules (lowercase). lcfirst passe la première lettre de la chaîne en minuscule. uc et ucfirst effectuent le passage en majuscules.

print lc($chaine);
# -> "hello"

6.4 Les autres fonctions

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.


next up previous contents index
suivant: 7. Le format de monter: perl précédent: 5. Les expressions régulières   Table des matières   Index
Olivier Aubert 2000-06-28