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 :

comment "déconcatener" une chaine


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Août 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 9
    Par défaut comment "déconcatener" une chaine
    Bonjour ,

    j'ai créer un fichier de sortie à partir d'un fichier d'entrée en perl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    open (IN, $InputFile) || die "Problem with the input file : $!";
    my $sortie_1="out_" .$InputFileNoDir ; 
    open (OUT, "> $sortie_1.txt") || die "Problem with the output file : $!";

    mon problème est que le fichier d'entrée se presente sous la forme
    xxx.dec
    donc mon fichier de sortie est alors
    out_xxx.dec.txt
    je ne veux pas avoir le point dec
    j'ai pensé au split mais je n'arrive pas à supprimer ".dec" car cette renvoie un tableau

    Autre question
    je voudrais que mon fichier de sortie soit dans le même répertoire que mon fichier d'entrée mais pas dans le même repertoire que mon fichier perl
    je recupère bien le chemin de mon fichier d'entrée mais après je ne sais pas quoi faire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    copy($sortie_1,$InputDir);
    je n'arrive pas à copier dans le bon repertoire , je n'ai pâs de message d'erreur mais rien ne se passe.


    Merci si vous avez des idées

  2. #2
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    le '.' est un caractère spécial des regexp qui est destiné à se subsituer à n'importe quel autre caratère.

    Quand tu veux faire un split sur le caractere '.' précisément il faut le prefixer avec \ et dans ce cas il ne joue plus sont role de caractère spécial.

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $informations = "A.B.C.D";
    @personne = split(/\./, $informations);
    doit te retourner un tableau ("A","B","C","D")


    autrement pour ton cas il existe aussi la fonction basename
    http://perldoc.perl.org/File/Basename.html

  3. #3
    Membre habitué
    Inscrit en
    Août 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 9
    Par défaut
    je te remercie pour ta réponse rapide
    j'ai effectivevement utiliser la fonction basename et j'ai mon résultat
    merci encore, je me cassais la tête avec le split
    maintenant, connaitrais_tu un moyen d'enregistrer mon fichier de sortie dans le même répertoire que mon fichier d'entrée?

  4. #4
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    Citation Envoyé par maluv Voir le message
    maintenant, connaitrais_tu un moyen d'enregistrer mon fichier de sortie dans le même répertoire que mon fichier d'entrée?
    A priori il n'y a pas de raison que ton script change de repertoire sans que tu le lui dise.

    maintenant si le nnom de ton fichier il y'a un chemin tu peux le récupérer avec dirname qui est décrit dans la page donnée précédement.

  5. #5
    Membre habitué
    Inscrit en
    Août 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 9
    Par défaut
    j'ai peut être pas bien expliquer mon problème.
    au fait pour dérouler le script , je fais dans le DOS

    path\xxx.pl path2\yyy.dec

    mon script fait un grep de regexp et me met le tout dans le fichier de sortie

    le pb est que mon "out_yyy" ( fichier de sortie) se trouve dans path , ce que je comprends mais j'aimerais le mettre plutot dans path2

    je recupère bien mon path2 mais je ne sais pas comment envoyer mon fichier de sortie dans le path2

    si je ne suis pas claire dans mon explication, n'hésite pas .
    Merci

  6. #6
    Membre habitué
    Inscrit en
    Août 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 9
    Par défaut
    voilà ce que je fais pour déplacer le fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my $sortie_1="out_" .$filename ; 
    open (OUT, "> $sortie_1.txt") || die "Problem with the output file : $!";
    move("$sortie_1.txt","$InputDir")|| die "Problem to move output file : $!";
    $InputDir --> est bien le chemin ou je voudrais stocker mon fichier OUT
    (il se presente c:\documents and settings\desktop\)
    j'ai le message d'erreur suivant

    "permission denied in xxx.pl line 51 "

    qui correspond à mon move ()

    Je ne vois pas le problème

    Merci pour vos idées

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/05/2008, 18h43
  2. Réponses: 9
    Dernier message: 15/01/2006, 20h22
  3. Réponses: 2
    Dernier message: 06/12/2002, 07h50

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