IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

remplacement de fichier "in situ" avec unlink


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Profil pro
    Developer
    Inscrit en
    Janvier 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Janvier 2007
    Messages : 11
    Points : 11
    Points
    11
    Par défaut remplacement de fichier "in situ" avec unlink
    Bonjour,

    Je veux remplacer certaines chaînes de caractères dans un fichier. Je voudrais pour cela utiliser la technique de remplacement "in situ" du livre "Perl best practices" (OReilly, à lire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        open my $src,  '<', "config.txt";
        unlink $destination_file;  #ici le fichier "config.txt" est *oublié* par le filesystem
        open my $dest, '>', "config.txt";
    Normalement après ces 3 lignes je devrais pouvoir lire le fichier original depuis $src, et l'écriture dans $dest devrait écrire dans un nouveau fichier portant le même nom.

    Seulement voilà: Ca ne marche pas (je suis sur Windows XP). Le unlink efface le fichier config.txt, et je ne lis plus rien dans $src.

    Une idée ?
    Merci, Bruno

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    Damian le dit, Damian le fait:

    http://search.cpan.org/~dconway/IO-InSitu/

  3. #3
    Membre à l'essai
    Profil pro
    Developer
    Inscrit en
    Janvier 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Janvier 2007
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par pospos
    Damian le dit, Damian le fait:

    http://search.cpan.org/~dconway/IO-InSitu/
    Ben non, il le fait pas sur Windows (marche pas):
    358607 FAIL 5.8.8 on MSWin32 5.1 (MSWin32-x86-multi-thread)
    209996 FAIL 5.8.5 on MSWin32 4.0 (MSWin32-x86-multi-thread)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    hummm effectivement...
    tiens j'avais jamais essayé d'effacer un fichier et de conserver son $fh sous windows

    dans ce cas il te reste toujours la possibilité de creer un nouveau fichier, effacer l'ancien et renommer le nouveau...

  5. #5
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Oui, malheureusement c'est là une différence dans la façon de gérer les fichiers entre Windows et Linux : tant que le fichier est référencé soit par un hard-link soit par un logiciel en train de tourner, il reste sur le disque sous Linux, et on peut tout à fait créer un nouveau hard-link portant le même nom qu'un fichier qu'on vient d'unlinker même si celui-ci existe toujours (parce que référencé par un logiciel en train de tourner). Sous Windows ce n'est pas le cas... On est obligé de contourner le problème en créant un fichier temporaire et en écrasant l'original quand on a fini.

    --
    Jedaï

Discussions similaires

  1. Requete avec quote et double quote
    Par swissmade dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/08/2007, 16h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo