Modifier le contenu d'un fichier avec Perl

  • Créateur du sujet Créateur du sujet p4bl0
  • Date de début Date de début

p4bl0

Membre expert
Club iGen
12 Juillet 2004
4 772
423
36
$PWD
p4bl0.net
Bonjour !

J'ai un code Perl qui lit les lignes d'un fichier une à une et qui regarde si la ligne contient une expression (par exemple "toto"). ça, ça marche.

Le problème c'est que je voudrais, dans le cas ou la ligne contient cette expression, la remplacer (par exemple par "tata")

Comment faire pour remplacer le contenu d'une ligne d'un fichier en Perl ?
de manière à avoir tout les toto de mon fichier transformé en tata ?

merci d'avance !
 
ntx a dit:
pas con... :rateau:

EDIT :

ça y est je me rappel pourquoi j'ai voulu faire ça en Perl :
En fait, le script shell sais ce qu'il doit remplacer, mais pas par quoi, ça lui est donné en argument.

Et je sais pas comment (si c'est possible) filé un argument à sed.

C'est possible ? ou faut que je fasse ça en Perl, et à ce moment la je repose ma question du premier post.
 
ntx a dit:
Un truc du style :
Bloc de code:
$maVariable =~ s/monExprReg/maNouvelleValeur/;
oui mais pour que ça modifie dans le fichier je peut faire comment ??

voici mon code :
Bloc de code:
#!/usr/bin/perl -w
use strict;

my $nom = $ARGV[0];

open(FIC,"+<file.ext");

while (<FIC>) {
	my $ligne = $_;
	if ($ligne =~ m/==NOM==/) {
		$ligne =~ s/==NOM==/$nom/;
	}
}

close(FIC);

sauf que le fichier n'est pas modifier !
 
Tu appelles sed dans ton script perl ou tu regénères un nouveau fichier avec les lignes modifier. Je pencherais plutôt pour le première solution.