Henri772 | 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 :
- use warnings;
- use autodie;
- use List::Util 'any';
-
- my $input_file = 'DATA.csv';
- my (@headers, %docs, $fh);
-
- open(my $Fhresult, '<', $input_file);
- while (<$Fhresult> ) {
- last if (/^\d+\s+\d{2}:\d{2}:\d{2}\s*$/);
- }
- while (<$Fhresult> ) {
- if ($. == 2) {
- chomp;
- s/^default,\s*//;
- @headers = split ( /[ ,. ;:\(\)\/\*\"]+/ ); #" (commentaire juste pour que ça soit mieux visualisé sur hfr)
- next;
- }
- next unless /\S/;
- chomp;
- my ($file, @fields) = split /\s*,\s*|\s+/;
- $docs{$file} = [@fields] if any { $_ eq 'fault' } @fields;
- # ou bien? $docs{$file} = [@fields]; si on veut tout
- }
- close($Fhresult);
-
- #foreach my $doc (keys %docs) {
- #print "$doc:\n";
- #foreach (0..$#headers) {
- # printf("%18s : %s\n", $headers[$_], $docs{$doc}->[$_]);
- #}
- #print "\n";
- #}
- foreach my $doc (keys %docs) {
- open my $fh, '>',"fh.txt"; #'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;
- }
|
Message édité par Henri772 le 11-07-2015 à 13:09:51
|