Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
827 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

compte sur l'horizontale et la verticale

n°2262222
Henri772
Posté le 09-07-2015 à 15:30:35  profilanswer
 

Reprise du message précédent :

gilou a écrit :

C'est pas très clair.
Tu veux dire qu'un truc comme ceci:

doc51:
           primary : 5
         secondary : fault
    copy_directory : 7
  forced_copy_flag : 8
 always_allow_dump : 9
      type_of_dump : 10
  full_memory_dump : disallow
 
doc39:
           primary : /dev/lg_dumplv
         secondary : /dev/sysdumpnull
    copy_directory : /var/adm/ras
  forced_copy_flag : 1
 always_allow_dump : fault
      type_of_dump : fw-assisted
  full_memory_dump : disallow
 
doc46:
           primary : 5
         secondary : fault
    copy_directory : 7
  forced_copy_flag : 8
 always_allow_dump : 9
      type_of_dump : 10
  full_memory_dump : disallow

se retrouverait dans 3 fichiers?
Faut faire un truc comme:
foreach my $doc (keys %docs) {
  open my $fh, ">", 'un nouveau nom a chaque tour.txt',
  print $fh "$doc:\n";
  foreach (0..$#headers) {
    printf($fh "%18s : %s\n", $headers[$_], $docs{$doc}->[$_]);
  }
  print $fh "\n";
  close $fh;
}
 
A+,
 


 
 
une fois de plus merci , mais au niveau de   foreach (0..$#headers)  je n'ai pas cette essaye , pouvait-on ecrire  foreach (@headers) {
                                                                                                                                                                                                printf($fh "%18s : %s\n", $headers[$_], $docs{$doc}->[$_]);
                                                                                                                                                                                                        }
 
en ce qui concerne les fichiers de sortie j'aimerai qu'il me revois du genre :
fichier1:

doc51:
           primary : 5
         secondary : fault
    copy_directory : 7
  forced_copy_flag : 8
 always_allow_dump : 9
      type_of_dump : 10
  full_memory_dump : disallow


fichier2:


doc39:
           primary : /dev/lg_dumplv
         secondary : /dev/sysdumpnull
    copy_directory : /var/adm/ras
  forced_copy_flag : 1
 always_allow_dump : fault
      type_of_dump : fw-assisted
  full_memory_dump : disallow


fichier3:


doc46:
           primary : 5
         secondary : fault
    copy_directory : 7
  forced_copy_flag : 8
 always_allow_dump : 9
      type_of_dump : 10
  full_memory_dump : disallow


 
en plusieurs et ainsi de suite.
 
 
Salut, je me permet de te derrange une fois de plus comment faire a ce que ce code me renvoit chaque document sur un fichier de sortie, exactement comme en haut de ce message.
 

Code :
  1. use warnings;
  2.     use autodie;
  3.     use List::Util 'any';
  4.    
  5.     my $input_file = 'DATA.csv';
  6.     my (@headers, %docs, $fh);
  7.    
  8.     open(my $Fhresult, '<', $input_file);
  9.     while (<$Fhresult> ) {
  10.      last if (/^\d+\s+\d{2}:\d{2}:\d{2}\s*$/);
  11.     }
  12.     while (<$Fhresult> ) {
  13.      if ($. == 2) {
  14.        chomp;
  15.        s/^default,\s*//;
  16.        @headers = split ( /[ ,. ;:\(\)\/\*\"]+/ );  #" (commentaire juste pour que ça soit mieux visualisé sur hfr)
  17.        next;
  18.      }
  19.      next unless /\S/;
  20.      chomp;
  21.      my ($file, @fields) = split /\s*,\s*|\s+/;
  22.      $docs{$file} = [@fields] if any { $_ eq 'fault' } @fields;
  23.      # ou bien? $docs{$file} = [@fields]; si on veut tout
  24.     }
  25.     close($Fhresult);
  26.    
  27.     #foreach my $doc (keys %docs) {
  28.      #print "$doc:\n";
  29.      #foreach (0..$#headers) {
  30.       # printf("%18s : %s\n", $headers[$_], $docs{$doc}->[$_]);
  31.      #}
  32.      #print "\n";
  33.     #}
  34. foreach my $doc (keys %docs) {
  35.   open my $fh, '>',"fh.txt"; #'un nouveau nom a chaque tour.txt',
  36.   print $fh "$doc:\n";
  37.   foreach (0..$#headers) {
  38.     printf($fh "%18s : %s\n", $headers[$_], $docs{$doc}->[$_]);
  39.   }
  40.   print $fh "\n";
  41.   close $fh;
  42. }


Message édité par Henri772 le 11-07-2015 à 13:09:51
mood
Publicité
Posté le 09-07-2015 à 15:30:35  profilanswer
 

n°2262232
gilou
Modérateur
Modzilla
Posté le 09-07-2015 à 18:25:16  profilanswer
 

> une fois de plus merci , mais au niveau de   foreach (0..$#headers)  je n'ai pas cette essaye , pouvait-on ecrire  foreach (@headers)
Non, puisque le contenu de la liste @{$docs{$doc}} n'est pas celui de @headers. Ce que j'exploite, c'est qu'ils ont même nombre d'éléments.
 
> en ce qui concerne les fichiers de sortie j'aimerai qu'il me revois du genre :  
Donc voir les indications de mon précédent post.
 
A+,
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Intégration de compte client dans site e-commercescripte connexion a un compte web automatiquement
Compiler puis envoyer une appli (gratuite) sur un compte AppleStoreProblème Ressource/Config/Log4j pas pris en compte
compte bancaire sous java[objective-c/ios] Provisioning sans compte dev
.NET & Oracle - Compte expiréJ'attends la suppression de mon compte.
Lancer un auto-scrol - Défillement verticale automatique[PowerShell] Compte le nombre de ligne d'un fichier
Plus de sujets relatifs à : compte sur l'horizontale et la verticale


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR