Le Mercredi 27 Juillet 2005 22:35, cc a écrit : > bonsoir, > y a-t-il un spécialiste de perl dans la salle ? > Je voudrais savoir s'il existe un moyen, au sein d'un script perl, > d'avoir le même comportement que sed -i ou perl -pi -e 'commandes' > fichier_a_traiter : que les modifications introduites par le script > s'appliquent sur le fichier en cours de traitement (sans avoir recours > à un fichir temporaire)
perl -pi -e passe par un fichier temporaire, il ne fait que cacher la chose,
mais dans la pratique il y est obligé.
tu peux faire une fonction qui fait ça cependant, mais utilise un fichier
temporaire, je ne vois pas comment faire autrement:
sub perlpi {
my ($fichier, $regexp) = @_;
my $temp = "$fichier.$$";
open my $fh, '<', $fichier or return 1;
open my $tfh, '>', $temp or reutrn 1;
while (<$fh>) {
$_ =~ /$regexp/;
}
close $fh;
close $tfh;
unlink $fichier or return 1;
rename $temp, $fichier or return 1;
0
}
UNTESTED !!!
pgpntbjcQDFU8.pgp
Description: PGP signature
