Selon Olivier Thauvin <[EMAIL PROTECTED]>:

> 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 !!!
>
merci pour cette information. je vais poursuivre dans cette voie. je ne voudrais
pas me planter puisqu'il s'agit de travailler sur /etc/passwd !
question subsidiaire : peut-on (en perl) avoir un accès direct à un
enregistrement ?

--
CC

____________________________________________________
Want to buy your Pack or Services from Mandriva? 
Go to http://store.mandriva.com
Join the Club : http://www.mandrivaclub.com
____________________________________________________

Répondre à