Manipulation de chaînes
 

Commandes index, rindex,length, substr

Retourne le nombre de caractères sautés avant de trouver une occurrence de la sous-chaîne cherchée. On peut sauter n caractères avant de chercher la première occurrence de la sous-chaîne en passant n en troisième paramètre à la commande index :

$position = index("grosminet n'est pas gros","gros",5); # renvoie 20

La recherche commence ici par l'extrémité droite de la chaîne, mais retourne toujours le nombre de caractères entre l'extrémité gauche et la sous-chaîne.

Retourne le nombre de caractères de la chaîne.

Permet d'affecter une partie d'une chaîne à une variable. Si le troisième argument est omis, le reste de la chaîne sera copié dans la variable. Exemple :

$nouv = substr("Hello world",6,2); # affecte "wo" à $nouv

$nouv = substr("Hello world",6); # affecte "world" à $nouv

Remplace la portion de chaîne indiquée par la sous-chaîne. Exemple :

$string = "Hello you";

substr($string,6,5)="world";

print "$string\n"; # affiche "Hello world"

Si l'on passe un entier négatif -n comme nombre de caractères à sauter, la substitution commence à n caractères de l'extrémité droite de la chaîne. La longueur indique ici le nombre de caractères de la chaîne initiale à remplacer. Si l'on passe une longueur nulle en argument, cela signifie qu'aucun caractère ne doit être remplacé. La sous-chaîne est alors insérée à l'endroit spécifié. Exemple :

$string = "Hello world";

substr($string,6,0) = "you, ";

substr($string,-1,3) = "d !";

print "$string\n"; # affiche "Hello you, world !"

Conversion de casse

lc, uc, lcfirst et ucfirst convertissent les chaînes ou les premiers caractères d'une chaîne en minuscule ou majuscule

Quotemeta

La fonction quotemeta place un antislash au début de n'importe quel caractère qui n'est pas un mot. Ceci est utile lorsque la chaîne doit être utilisée dans une opération de recherche de modèle.
 

Outils de manipulation de listes

grep

@out = grep (modèle,@in);

Permet d'affecter à une liste de sortie les éléments d'une liste d'entrée qui coïncident avec un modèle.

splice

splice (@liste_entree,saut_nb_elements,nb_elts_a_remplacer,@sous_liste);

C'est donc l'équivalent pour les listes de substr pour les chaînes. Exemple :

@in = (1,8,9,4);

@sous_l = (2,3);

splice (@in, 1,2,@sous_l); # affecte (1,2,3,4) à @in

Comme dans substr, si l'on spécifie un nombre nul d'éléments à remplacer, l'instruction permettra d'insérer la sous-liste dans la liste initiale.

Inversement, si l'on ne spécifie pas de sous-liste, on peut alors supprimer des éléments de la liste initiale.

Shift, unshift, push et pop

$var = shift(@liste);

Supprime le premier élément de la liste, et l'affecte à la variable. C'est particulièrement pratique pour traiter les arguments de la ligne de commande.

Inversement, unshift permet d'insérer des valeurs en début d'une liste, le résultat étant le même qu'avec splice. Push permet d'insérer des éléments en fin de liste. Pop annule les effets de push.

Les syntaxes sont les suivantes :

unshift(@liste,"new_element"); # retourne en outre le nb d'élts dans la liste

push(@liste,@sous_liste_de_fin);

pop(@liste); # retourne l'élément supprimé

map

Permet d'utiliser chacun des éléments d'une liste ... La variable $_ contient l'élément de la liste en cours d'utilisation. Ex :

@liste = (1,2,3) ;

@liste_inc = map ($_+1, @liste); # affecte (2,3,4) à @liste_inc

On peut également utiliser map avec un sousogramme, en passant $_ en argument.