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 :

Problème avec print Fout


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 58
    Par défaut Problème avec print Fout
    Bonjour,

    Je suis en train de faire un script en perl. Je ne sais pas comment faire pour créer plusieur fichier de sortie.

    J'arrive a en créer un par un en faisant comme ceci :

    Ce que je voudrait faire, c'est que mon script crée automatiquement autant de fichier de sortie que de clé dans mon hash.
    J'ai essayé de le mettre dans un foreach mais cela ne me crée qu'un seul fout.

    J'aimerais avoir en sortie par exemple si j'ai 4 clés : 4 fichier de sortie. Mon probléme c'est que je ne sais pas a l'avance combien de clé je vais avoir.

    Merci,

  2. #2
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Bonjour,

    Peut-être à l'aide du modile FileHandle
    http://search.cpan.org/~rgarcia/perl.../FileHandle.pm

    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
    #!/usr/local/bin/perl
     
    use strict;
    use warnings;
    use FileHandle;
     
     
    my %Fichiers =
    (
            "Fich1" => "blabla1",
            "Fich2" => "blabla2",
    );
     
     
     
    foreach my $Fich (keys %Fichiers)
    {
            my $Out = FileHandle->new (">P:/Perl/".$Fich.".txt");
    }

    Ce script fonctionne mais l'ennui est que dès que tu sors de ta boucle tu perds la variable $Out. Peut-être en utilisant des références stockées dans un tableau? J'espère que cela te donner des idées pour progresser.


    Jasmine,

  3. #3
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Voila, j'ai trouvé quelque chose qui fonctionne pour écrire dans les fichiers une fois sorti de la boucle.

    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
    #!/usr/local/bin/perl
     
    use strict;
    use warnings;
    use FileHandle;
     
     
    my %Fichiers =
    (
            Fich1 => "blabla1",
            Fich2 => "blabla2",
     
    );
     
     
    my %OutFile;
    foreach my $Fich (keys %Fichiers)
    {
            my $Out = FileHandle->new (">P:/Perl/".$Fich.".txt");
            $OutFile{$Fich} = \$Out;
    }
     
    print ${$OutFile{Fich1}} ("coucou");

    Il existe peut-être plus simple et plus propre, mais je ne connais pas.
    Ici, je mets une référence sur $Out qui est déjà une référence mais je n'arrive pas à faire autrement.


    Jasmine,

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 58
    Par défaut
    Je viens d'essayé ton exemple, ca marche nickel quand on sait a l avance combien de clé on va avoir.
    C'est ca mon problème, je ne sais pas a l'avance si j'aurai 3 ou 10 clés...
    Il n'esxiste pas un moyen de faire par exemple Fout++ ou un truc du genre?
    Ce qui voudrait dire que tant qu'il y a des clés, il me fait un fichier de sortie qui contient la valeur de cette clé.

    Voila, ca marche, il me crée autant de fichier.txt que de clés. Il me met le nom de la clé comme nom de fichier. Maintenant j essaye qu'il me mette dans chaque fichier crée le chiffre associé a cette clé.

    Merci,


    Mimiche

  5. #5
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    J'ai un peu du mal à saisir ton problème du nombre de clés.
    Cela ne convient-il pas si tu mets les clés dans un tableau indexé. Ensuite tu peux facilement en connaître le nombre et les rappeler via des boucles.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    my @Cles;    # liste contenant les clés
    my %OutFile;
    foreach my $Fich (keys %Fichiers)
    {
            my $Out = FileHandle->new (">P:/Perl/".$Fich.".txt");
            push(@Cles, $Fich);
            $OutFile{$Fich} = \$Out;
    }
    print "Nombre de clés = ".@Cles."\n";
    @Cles contient la liste de tes clés


    Voila, ca marche, il me crée autant de fichier.txt que de clés. Il me met le nom de la clé comme nom de fichier. Maintenant j essaye qu'il me mette dans chaque fichier crée le chiffre associé a cette clé.
    Si ton programme ne se résume qu'à cela, il ne faut même pas créer le tableau %OutFile
    Ceci suffit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    foreach my $Fich (keys %Fichiers)
    {
            my $Out = FileHandle->new (">P:/Perl/".$Fich.".txt");
            print $Out $Fichiers{$Fich};
            # ... reste du traitement sur le fichier
    }
    Peux tu traiter fichier par fichier sans devoir y faire appel en dehors du foreach?
    Si tu expliquais un peu plus en détails ce que tu cherches à faire, je pourrais peut être t'aider plus ... parce que là c'est très floue.



    Je ne connais pas du tout Fout++, je ne sais pas répondre à ta question.


    Jasmine,


    Bon courage,

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 58
    Par défaut
    Voici ce que j ai fais : Cette boucle me permet de créer en sortie autant de fichier que je n'ai de clé. Chaque fichier de sortie à le nom de la clé .txt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    foreach my $Fich (keys %ifCount)
    {
            my $Out = FileHandle->new (">P:/Perl/".$Fich.".txt");
            print $Out $ifCount{$Fich};
     
    }
    Ce que j'essaye ed faire maintenant c'est que dans chaque fichier crée, il me mette la valeur assicée a la clé.

    Pour faire ca, j'ai remplacé $ifCount{$Fich} par $ifCount{$ValeurDeCle} mais ca ne fonctionne pas.

    Il me met dans chaque fichier : HASH (...)


    Merci,


    Mimiche

    François

  7. #7
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Tu dois cocher la case afin de signaler que le problème est résolu.

    Jasmine,

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

Discussions similaires

  1. Problème avec la fonction print
    Par Spinoza23 dans le forum Débuter
    Réponses: 6
    Dernier message: 11/09/2009, 11h04
  2. problème avec 'print'
    Par lebonsai dans le forum Général Python
    Réponses: 6
    Dernier message: 31/05/2009, 21h11
  3. Problème avec la fonction print
    Par Gébix dans le forum Octave
    Réponses: 7
    Dernier message: 28/10/2008, 14h05
  4. problème avec css print
    Par flambyture dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 02/05/2008, 12h52
  5. [VBA-E] problème avec la fonction print#
    Par phoon dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/03/2006, 09h51

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