[Perl] Suppr d'espaces en début de ligne

Résolu/Fermé
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 - 20 oct. 2005 à 10:01
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 - 20 oct. 2005 à 15:27
Salut à tous,

J'ai un petit souci avec une expression régulière Perl.
Je fais un test avec le petit programme suivant :
#!/usr/bin/perl -w
use strict;

my $text = " hey bonjour\n         \t          pof pif";

print "$text\n";
$text =~ s/^[ \t]+//g;
print "$text\n";


Normalement, le deuxième print devrait m'afficher
hey bonjour
pof pif


Au lieu de ça, le remplacement semble ne fonctionner que sur la première ligne ?! Ça me donne donc :
hey bonjour
                          pof pif


J'ai testé ce bout de code sous windows avec cygwin et sur une debian, le résultat est le même.

Je ne comprends pas du tout ce comportement : je dis bien supprime moi (s) tout espace ou tabulation ([ \t]+) et ce pour toutes les occurrences (/g).

Quelqu'un voit pourquoi ça fonctionne pas et surtout quelle serait la solution à ce souci ?

Merci
@++
A voir également:

2 réponses

wiwimagique Messages postés 481 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 20 avril 2006 108
20 oct. 2005 à 10:38
L'accent circonflexe indique que les espaces doivent être en début de chaîne uniquement.

Si tu veux tout enlever, enlève le ^
0
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
20 oct. 2005 à 10:45
Oui, je sais. Désolé, je ne l'ai pas redit dans ma phrase récapitulative. Mais, l'exemple où je montre la différence d'affichage entre ce que j'attends et ce que j'obtiens montre que je ne veux supprimer que les espaces en début de ligne avant le texte.

Merci qd même.
@++
0
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
20 oct. 2005 à 15:27
Bon, j'ai trouvé la réponse :

Il suffit de mettre /mg au lieu de simplement /g. Ça fait considérer la chaîne de caractères comme une chaîne multi-ligne.

Sinon, le ^est compris comme le début d'une chaîne et non tout caractère suivant \n.

@++
0