[PERL]Remplacer chaine de caractères d'un txt

[Résolu/Fermé]
Signaler
Messages postés
63
Date d'inscription
lundi 2 juillet 2007
Statut
Membre
Dernière intervention
25 mars 2011
-
Messages postés
63
Date d'inscription
lundi 2 juillet 2007
Statut
Membre
Dernière intervention
25 mars 2011
-
Bonjour tout le monde,

J'essaye de faire un petit scrip en PERL, qui après avoir mis en arguments en paramètre :
- Ouvre un fichier
- Lit le contenu
- Recherche la ligne commençant par "Logfile"
- Puis la modifie par la valeur de l'argument qui nous avons mis à paramètre.

Voici alors mon petit script :

use strict;use warnings;
open F_ECRIRE,'+<C:\Documents and Settings\TMart\Bureau\monfichier.txt' or die "E/S : $!\n";

while(<F_ECRIRE>)
{
(@ARGV >= 1) or die "Arguments insuffisants";
my $toto=$ARGV[0];
my $tata;
$tata=/^LogFile=/.../^\s*$/;
my $x;
$x =~ s/$tata/$toto/;
print F_ECRIRE if $x;

}
close F_ECRIRE;


Et quand je le lance j'ai des erreurs du style : "Use of uninitialized value in substitution (s///) ... "

Débutant en PERL, il se peut qu'il y est des énormités dans mon code, donc je m'en excuse d'avance si c'est le cas :).

Merci d'avance,

TMart.

2 réponses

Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 545
Salut,
lami20j@debian:~/trash$ cat monfichier.txt
Logfile=20000
blabla
Logfile=20000
blabla
lami20j@debian:~/trash$ cat ccm1_modifiefichiersurplace.pl
#!/usr/bin/perl
use strict;use warnings;

open F,"+< monfichier.txt" or die "E/S : $!\n";

my @tableau = <F>;
map {s/^(Logfile=).*$/${1}$ARGV[0]/} @tableau;
seek(F,0,0);
print F @tableau;
close F;
__END__
lami20j@debian:~/trash$ perl ccm1_modifiefichiersurplace.pl 10
lami20j@debian:~/trash$ cat monfichier.txt
Logfile=10
blabla
Logfile=10
blabla
labla

Cette méthode n'est conseillé que sur des petits fichiers (Un fichier des 10 000 lignes n'est pas grand, je parle d'un fichier qui fait quelques centaines de Mo)

Si tu veux faire sur des grands fichiers vaut mieux d'utiliser d'autres méthodes.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
63
Date d'inscription
lundi 2 juillet 2007
Statut
Membre
Dernière intervention
25 mars 2011
7
Merci beaucoup lami2Oj, ça marche nickel !