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 !!!

Attachment: pgpntbjcQDFU8.pgp
Description: PGP signature

Répondre à