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

Résolu/Fermé
TMart Messages postés 63 Date d'inscription lundi 2 juillet 2007 Statut Membre Dernière intervention 25 mars 2011 - 23 janv. 2009 à 17:15
TMart Messages postés 63 Date d'inscription lundi 2 juillet 2007 Statut Membre Dernière intervention 25 mars 2011 - 26 janv. 2009 à 09:20
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.
A voir également:

2 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
23 janv. 2009 à 18:19
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
TMart Messages postés 63 Date d'inscription lundi 2 juillet 2007 Statut Membre Dernière intervention 25 mars 2011 7
26 janv. 2009 à 09:20
Merci beaucoup lami2Oj, ça marche nickel !
0