Forum Programmation.perl spliter un fichier

Posté par . Licence CC by-sa
Tags : aucun
-3
31
juil.
2015

Je dois code Perl qui split un fichier; Malheureusement, il ne remplit pas ma tâche. Je veux qu'il me retourne les colonnes avec "fault" en dessus en voici un exemple de fichier

------------------------------------DATA.csv-----------------------------------------------

                2015.07.23  16:47:23
                              false,    false,       true,      false,    true,    false,
                      defau,  ame_a,    ame_m,       ame_uc,     ame_f,    ams_l,  en_affi,
                true  DPA01,  fault,    fault,       fault,      fault,    fault,      1,
                false DPA02,       ,         ,            ,           ,    fault,      1,
                false DPA03,  fault,    fault,         olt,      fault,    fault,      1,
                false DPA01,  fault,       at,       fault,          2,    fault,      1,

jaimerai au finisch qu#il me revoi ceci

-------------------------------ame_a--------------------------------------
    ame_a,   
    fault,    
         ,     
    fault,    
    fault,

--------------------------------ame_m----------------------------------------
    ame_m,   
    fault,    
         ,     
    fault,    
       at,    

--------------------------------ame_f------------------------------------------
    ams_l,   
    fault,    
         ,     
    fault,    
        2,
---------------------------------en_affi----------------------------------------
    en_affi,   
          1,    
          1,     
          1,    
          1,

voici mon code lui il ne peut que spliter le fichier sans faire de tri, peut etres quelqu'un ici pourrai me venir en aide.

use strict;
use feature qw(say);
use autodie qw(:all);

open(DATA, '<', 'DATA.csv');
scalar <DATA>;
my @header = split /\s*,\s*/, <DATA>;
chomp $header[-1];
my @outputFHs;

for (1..@header-1) {
    open $outputFHs[$_], ">", "file$_";
    say {$outputFHs[$_]} "$header[$_]:";
}

while (<DATA>) {
    chomp;
    next unless length;
    my @cols = split /\s*,\s*/;
    for my $colNo (1..@header-1) {
        say {$outputFHs[$colNo]} "$cols[0] : $cols[$colNo]";
    }
}
  • # Je comprends pas...

    Posté par . Évalué à 1.

    Tu dois envoyer ton fichier en Croatie ?? Vraiment, c'est étrange comme requête…

    - Dans la vie, il faut toujours se fier aux apparences. Quand un homme a un bec de canard, des ailes de canard et des pattes de canards, c’est un canard. C’est vrai aussi pour les petits merdeux.

  • # Utilise un module

    Posté par (page perso) . Évalué à 3.

    Le CSV, ça peut vite être compliqué, donc prend un module qui va t'aider à le parser proprement, après t'auras plus grand chose à faire, et tu pourras accéder aux cellules plus facilement.

    Je dirais que celui-ci irait bien : https://metacpan.org/pod/Parse::CSV

    It's a fez. I wear a fez now. Fezes are cool !

    • [^] # Re: Utilise un module

      Posté par . Évalué à -6.

      ce ducument est le resultat d'un parsage et comme je l'ai dit si tu essaye le code plus haut il va le decoupe en plusieurs fichier, le probleme c#est comment faire pour effectuer le tri c'est a dire
      me revoyer les colonnes avec false en dessus. donc je ne vois pas du tout ce qu'un parsage a encore a chercher ici.

      • [^] # Re: Utilise un module

        Posté par . Évalué à -6. Dernière modification le 31/07/15 à 23:20.

        je vois que ma question menace, es ce que quelqu#un peu donc faire a ce qu#il me revoit juste les noms d'ou il ya le "false" en dessus.
        dans le cas present il devrai me renvoyer
        ame_a
        ame_m

        ame_f

        en_affi

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.