Je sais que ce genre de questions a déjà été posé de nombreuses fois auparavant. La raison pour laquelle je reviens ici est que j'ai l'impression d'avoir manqué quelque chose de simple et de fondamental.
Est-il possible d'améliorer ce type de routine de recherche et de remplacement ? Par exemple, sans ouvrir deux fois le même fichier. Les conseils en matière de vitesse sont également les bienvenus.
Veuillez noter que cela fonctionne avec les correspondances multilignes et remplace également les chaînes multilignes.
#!/bin/perl -w -0777
local $/ = undef;
open INFILE, $full_file_path or die "Could not open file. $!";
$string = <INFILE>;
close INFILE;
$string =~ s/START.*STOP/$replace_string/sm;
open OUTFILE, ">", $full_file_path or die "Could not open file. $!";
print OUTFILE ($string);
close OUTFILE;
0 votes
Il semble que vous essayez d'éditer le fichier sur place. C'est-à-dire de l'ouvrir en lecture et en écriture. Est-ce correct ?
0 votes
Oui, l'édition de fichiers sur place. C'est le cas le plus courant pour moi.
0 votes
Je gravite autour des solutions générales, mais j'ai parfois besoin qu'on me rappelle que pour quelque chose comme ça, il peut être (et c'était le cas aujourd'hui !) intéressant d'essayer dans un IDE (par exemple, Find In Project + Find-and-Replace d'IntellJ) par rapport à la montée en puissance, aux essais et erreurs, et à la vérification après coup pour une solution de script.