# Modifier le contenu d'un fichier avec Perl



## p4bl0 (27 Juin 2006)

Bonjour !

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

Le probl&#232;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&#232;re &#224; avoir tout les toto de mon fichier transform&#233; en tata ?

merci d'avance !


----------



## ntx (27 Juin 2006)

Utilise sed


----------



## p4bl0 (27 Juin 2006)

ntx a dit:
			
		

> Utilise sed


pas con... :rateau:

*EDIT :*

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

Et je sais pas comment (si c'est possible) fil&#233; un argument &#224; sed.

C'est possible ? ou faut que je fasse &#231;a en Perl, et &#224; ce moment la je repose ma question du premier post.


----------



## ntx (27 Juin 2006)

Un truc du style :

```
$maVariable =~ s/monExprReg/maNouvelleValeur/;
```


----------



## p4bl0 (27 Juin 2006)

ntx a dit:
			
		

> Un truc du style :
> 
> ```
> $maVariable =~ s/monExprReg/maNouvelleValeur/;
> ```


oui mais pour que &#231;a modifie dans le fichier je peut faire comment ??

voici mon 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 !


----------



## ntx (27 Juin 2006)

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.


----------



## p4bl0 (27 Juin 2006)

ntx a dit:
			
		

> 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.


comment fait on pour appeler sed depuis Perl ?


----------



## ntx (27 Juin 2006)

J'en sais rien. Cherche un exemple sur Google.


----------



## p4bl0 (27 Juin 2006)

ok. merci en tout cas


----------



## p4bl0 (24 Octobre 2008)

Woaw... ça date seulement de 2006 cette discussion... J'ai honte


----------

