Je veux remplacer Word "bleu" par "rouge" dans tous les fichiers texte nommés 1_classification.dat, 2_classification.dat et ainsi de suite. Je veux éditer le même fichier, j'ai donc essayé ce code mais cela ne fonctionne pas. Où est-ce que je vais mal?
@files=glob("*_classification.dat");
foreach my $file (@files)
{
open(IN,$file) or die $!;
<IN>;
while(<IN>)
{
$_='~s/blue/red/g';
print IN $file;
}
close(IN)
}
Quelque chose ne va pas avec une doublure?
$ Perl -pi.bak -e 's/blue/red/g' *_classification.dat
Explication
-p
traite, puis imprime <>
ligne par ligne-i
active l'édition sur place. Les fichiers sont sauvegardés à l'aide de .bak
extensionAucune des réponses existantes ici n'a fourni un exemple complet de la façon de procéder à partir d'un script (et non d'une ligne). Voici ce que j'ai fait:
rename($file, $file.'.bak');
open(IN, '<'.$file.'.bak') or die $!;
open(OUT, '>'.$file) or die $!;
while(<IN>)
{
$_ =~ s/blue/red/g;
print OUT $_;
}
close(IN);
close(OUT);
$_='~s/blue/red/g';
Quoi??
Juste
s/blue/red/g;
ou, si vous insistez pour utiliser une variable (ce qui n'est pas nécessaire lorsque vous utilisez $ _, mais je veux juste montrer la bonne syntaxe):
$_ =~ s/blue/red/g;