comment faire un remplacement sur chaque ligne d'une variable ?

Le
Thomas Harding
Je suis un complet novice en Perl

J'ai parcouru perldoc perlfaq6, mais n'ai rien trouvé de concluant.

Y'a-t-il quelque chose de plus élégant que:

@lignes = split("",$variable);
foreach $ligne(@lignes) {
$ligne =~ s/recherche/remplacement/;
print "$ligne";
}


--
Thomas Harding
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Benoit Izac
Le #144831
Bonjour,

le 03/06/2007 à 18:24, Thomas Harding a écrit dans le message

Je suis un complet novice en Perl...

J'ai parcouru perldoc perlfaq6, mais n'ai rien trouvé de concluant.

Y'a-t-il quelque chose de plus élégant que:

@lignes = split("n",$variable);
foreach $ligne(@lignes) {
$ligne =~ s/recherche/remplacement/;
print "$lignen";
}


Qu'est-ce qui n'est pas élégant ?

($tmp = $variable) =~ s/recherche/remplacement/m;
print "$tmpn";

Ou alors je n'ai pas compris et il va falloir que tu sois plus précis.

--
Benoit Izac

Thomas Harding
Le #144830
($tmp = $variable) =~ s/recherche/remplacement/m;
print "$tmpn";

Ou alors je n'ai pas compris et il va falloir que tu sois plus précis.


Je veux ajouter quelque chose au début de chaque ligne de ma variable.

le motif est s/^/default:/

Ça ne marche pas, avec ou sans modificateur "m" et je ne comprends pas
pourquoi.

J'ai aussi essayé le "g" :)

Le « pas élégant », c'est le fait de découper la variable en tableau
pour appliquer la regexp à chaque élément, alors qu'il doit y avoir une
solution en une ligne...

--
Thomas Harding

Jérémy JUST
Le #144828
Le Sun, 3 Jun 2007 18:24:18 +0200,

Y'a-t-il quelque chose de plus élégant que:

@lignes = split("n",$variable);
foreach $ligne(@lignes) {
$ligne =~ s/recherche/remplacement/;
print "$lignen";
}


Si tu veux un seul remplacement par ligne (c'est ce que tu fais), ça
me semble être le plus simple.

Si tu veux remplacer toutes les occurrences dans $variable:
$variable =~s/recherche/remplacement/g ;

Attention: si ton motif de recherche contient ^ ou $, il faudra
probablement ajouter le modificateur m pour avoir le comportement que
tu attends.


--
Jérémy JUST
kurtz le pirate
Le #144827
In article Thomas Harding
Je suis un complet novice en Perl...

J'ai parcouru perldoc perlfaq6, mais n'ai rien trouvé de concluant.

Y'a-t-il quelque chose de plus élégant que:

@lignes = split("n",$variable);
foreach $ligne(@lignes) {
$ligne =~ s/recherche/remplacement/;
print "$lignen";
}


ton $variable vient d'un fichier ? si oui :

open (SOURCEFILE,"<",$sourceFile)
or die "nerror when openning $sourceFile -> $!n";
while (<SOURCEFILE>) {
s/motif_recherche/motif_remplacement/g;
print "$_n";
}
close SOURCEFILE;


TIMTOWTDI
--
klp

Benoit Izac
Le #144826
Bonjour,

le 03/06/2007 à 23:28, Thomas Harding a écrit dans le message

($tmp = $variable) =~ s/recherche/remplacement/m;
print "$tmpn";

Ou alors je n'ai pas compris et il va falloir que tu sois plus précis.


Je veux ajouter quelque chose au début de chaque ligne de ma variable.

le motif est s/^/default:/

Ça ne marche pas, avec ou sans modificateur "m" et je ne comprends pas
pourquoi.

J'ai aussi essayé le "g" :)

Le « pas élégant », c'est le fait de découper la variable en tableau
pour appliquer la regexp à chaque élément, alors qu'il doit y avoir une
solution en une ligne...


Essaye-ça :

#!/usr/bin/perl
use warnings;
use strict;

my ($text, $tmp);
{ undef $/; $text = <DATA>; }
($tmp = $text) =~ s/^/default: /gm;
print "$tmp";

__DATA__
Un texte
sur plusieurs
lignes.

--
Benoit Izac


Publicité
Poster une réponse
Anonyme