Comme le fait la commande "sed" en Unix, Perl permet de faire des remplacements sur une chaine de caractères en utilisant
la syntaxe $chaine =~ s/motif/remplacement/;
#!/usr/bin/perl -w
use strict;
use Carp;
$fruit =~ s/e$/es/; #remplace un "e" final en "es"
$tel =~ s/01\.12\.22\.44\.99/00\.33\.1\.12\.22\.44\.99/; #remplace les numeros de téléphone par l'équivalent international.
my $arbres = "manguier pommier cerisier";
$arbres =~ s/(\w+)ier/arbres à $1es,/g;
print "liste: $arbres\n"; #=> liste: arbres à mangues, arbres à pommes, arbres à cerises,
$arbres =~ s/,$/./;
print "liste: $arbres\n"; #=> liste: arbres à mangues, arbres à pommes, arbres à cerises.
Quelques fonctions intéressantes en complément :
tr
|
Cette commande permet de transformer une chaine en une autre chaine ou de modifier des occurences dans une chaine. |
split
|
Découpe et range dans une liste les éléments trouvés contenus entre un délimiteur défini. split(delimiteur,$variable);
|
join
|
Concatene une valeur à chaque element d'une liste et range le tout dans une variable. join($valeur,@liste);
|
# tr
$name =~ tr/A-Z/a-z/; # Transforme toutes les majuscules en minuscules
$name =~ tr/er/ab/; # Transforme les e en a et les r en b
# split
$a = "1:2:3:4::5";
@liste = split(/:/,$a); #=> ("1","2","3","4","","5")
# join
$valeur = "+";
@liste = ("1","2","3","4");
$res = join($valeur,@liste); #=> ("1+2+3+4+")
|