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

Modules Perl Discussion :

un problème avec le module File::Copy


Sujet :

Modules Perl

  1. #1
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 5
    Points : 4
    Points
    4
    Par défaut un problème avec le module File::Copy
    bonjour!
    je débute en Perl et j'ai eu un problème avec le module Copy::File et la fonction move ( j'ai lu le FAQ et fais des recherche sur google mais en vain!)
    Mon programme supprime la chaine de caractère "<iframe...>...</iframe>" dans un fichier X.txt(reçu en argument), deplace le fichier original X.txt dans un dossier backup et renomme le nouveau fichier 2X.txt (qui ne contient plus la chaine et créé par le programme). #c'est très simple
    voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    use File::Copy;
    open(FILE2, ">2".$ARGV[0] ) or die ("prob");
    open my ($FILE1), '<', "$ARGV[0]"  or die "probleme\n";
     
    while( my $line = <$FILE1> ) {
     
    	if ( $line =~ /<iframe .+>.+<\/iframe>/ ) {
     
    		print "existe et a ete supprime\n";
     
                     $line =~ s/<iframe .+>.+<\/iframe>/ /g;	
    }else 
    	{
           print FILE2 "$line\n" ;
    }
    }
     
    close(FILE1);
    close(FILE2);
    #$oldlocation ="$ARGV[0]" ;
    #$newlocation = "Backup/$oldlocation"; 
    move( $ARGV[0], "Backup/".$ARGV[0]) or die "fail to move";
    rename("2".$ARGV[0] , $ARGV[0]) or die "fail to move";
    print"fin\n";
    ***************************Problème:
    Les fonctions move et rename marchent très bien quands elles sont "apart" mais ne font rien dans ce cas-ci!
    Pouvez m'aider?
    merci

  2. #2
    Membre confirmé Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 570
    Points
    570
    Par défaut
    Tu ouvres le même fichier (nom passé en ARGV) deux fois. (Ou alors veux-tu un 2 devant le nom de ficher ?)

    Utilise les pragmas strict et warnings, cela t'évitera ce genre de souci.

    Aussi, mieux vaut se tenir aux scalaires pour handle de fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    open my $rfh, '<', ARGV[0] or die "$!\n";
    open my $wfh, '>', ARGV[1] or die "$!\n";

  3. #3
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    @iblis: j'ai ouvert 2 fichiers differents: X.txt(en mode lecture) et 2X.txt(en mode écriture) la suppression marche très bien..mais les fonctions move et rename non!! et pourtant elles marchent bien quands elles sont seules( càd en commantant tout le programme après la suppression) ou en lançant rename et move dans une nouvelle fenetre..mais c'est pas ça ce que je cherche
    Merci Iblis
    le message d'erreur est le suivant:
    fail to move at remove-sp.pl line 38, <$FILE1> line 4479.

  4. #4
    Membre confirmé Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 570
    Points
    570
    Par défaut
    Essaie avec un chemin absolu.

    Et quand tu "die" fais afficher l'erreur : die "Move failed: $!\n";

    Tu es sûr d'avoir les droits d'écriture vers Backup/ au fait ? ($! devrait te dire ce qu'il en est).

  5. #5
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    c'est vrai!
    "$!" a fait sortir l'erreur suivante: 'Permission Denied'
    ce qui veut a priori dir que je n'ai pas le permission d'ecriture!
    comment l'autoriser a le faire?

  6. #6
    Membre confirmé Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 570
    Points
    570
    Par défaut
    Citation Envoyé par Aymen_bass Voir le message
    c'est vrai!
    "$!" a fait sortir l'erreur suivante: 'Permission Denied'
    ce qui veut a priori dir que je n'ai pas le permission d'ecriture!
    comment l'autoriser a le faire?
    Par exemple :
    Code shell : Sélectionner tout - Visualiser dans une fenêtre à part
    chmod u+w /path/to/Backup

  7. #7
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    il falé juste mettre Close ($file1);



    merci a toi Iblis
    ces forums ont aidé beaucoup de gens!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec les conctructeurs de copie
    Par tom6304 dans le forum C++
    Réponses: 7
    Dernier message: 11/02/2007, 12h33
  2. [AJAX] Ajax avec input type file
    Par cywals dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 03/08/2006, 09h29
  3. problème avec le module DBI
    Par vbcasimir dans le forum SGBD
    Réponses: 6
    Dernier message: 08/10/2005, 12h48
  4. problème avec un module
    Par vbcasimir dans le forum Modules
    Réponses: 2
    Dernier message: 29/08/2005, 15h59
  5. Réponses: 4
    Dernier message: 14/01/2005, 19h41

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