Manipulation de chaînes
Commandes index, rindex,length, substr
$position_premier_carac_gauche = index
($chaine, $sous_chaine);
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
$position = rindex($chaine, $sous_chaine);
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.
$nombre_carac = length ($chaine);
Retourne le nombre de caractères de la chaîne.
$sous_chaine = substr ($chaine,
$nombre_carac_a_sauter, $longueur);
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
substr ($chaine, $nombre_carac_a_sauter,
$longueur) =$sous_chaine;
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.