Bonjour,

J'ai un fichier comme suit :
8921301415753523385|KEY|7110452091
8921301415753523385|LASTNAME|Abik
8921301415753523385|FIRSTNAME|mehamed
8921301415753523385|BIRTHDATE|19821029
8921301415753523385|IDTYPE|pc
8921301415753523385|IDNUMBER|12345
8921301415753523385|ADDRESS|cite zahaf 250n08 djelfa
8921301415753523385|WILAYA|17
8921301415763133720|KEY|7120338689
8921301415763133720|LASTNAME|Amrou
8921301415763133720|FIRSTNAME|abdedjabar
8921301415763133720|BIRTHDATE|19920610
8921301415763133720|IDTYPE|Pc
8921301415763133720|IDNUMBER|23456
8921301415763133720|ADDRESS|msila
8921301415763133720|WILAYA|28

Si vous avez remarquer, le premier champs contient des valeurs qui se répètent, et j'aimerai bien les regrouper en une seule ligne
Je cherche a avoir le résultat :
8921301415753523385|KEY|7110452091|LASTNAME|Abik|FIRSTNAME|mehamed|BIRTHDATE|19821029|IDTYPE|pc|IDNUMBER|12345|ADDRESS|cite zahaf 250n08 djelfa|WILAYA|17
8921301415763133720|KEY|7120338689|LASTNAME|Amrou|FIRSTNAME|abdedjabar|BIRTHDATE|19920610|IDTYPE|Pc|IDNUMBER|23456|ADDRESS|msila|WILAYA|28

J'ai tenté avec le script (qui ne marche pas) :
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 
#!/usr/bin/perl
 
 
use strict;
 
sub usage () {
                     print STDERR "\nUsage : $0 fichier.txt file-ICCID \n";
                     exit(1);
                   }
 
 
my $FicResult = "result.txt";
open(SORTIE, "> $FicResult") or die("Erreur lors de la creation du fichier $FicResult : $!\n");
 
open ICCID, "< $ARGV[1]" or die "Can't open file $ARGV[0]: $!";
open MarkOUT, "< $ARGV[0]" or die "Can't open file $ARGV[0]: $!";
 
my @MarkOUTLine;
my @tab1;
my @tab2;
my @tab3;
my @tab4;
my @tab5;
my @tab6;
my @tab7;
my @tab8;
my %SDPHash;
my $variccid;
my $list;
 
 
while ( <ICCID> )
{
 
    chomp;
	$variccid = $_;
	while (<MarkOUT>) {
 
	@MarkOUTLine = split(/|/, $list);
	if ( exists $SDPHash { $MarkOUTLine[0] } )
            {
	        @tab1 = {$MarkOUTLine[1],$MarkOUTLine[2]};
			@tab2 = {$MarkOUTLine[1],$MarkOUTLine[2]};
			@tab3 = {$MarkOUTLine[1],$MarkOUTLine[2]};
			@tab4 = {$MarkOUTLine[1],$MarkOUTLine[2]};
			@tab5 = {$MarkOUTLine[1],$MarkOUTLine[2]};
			@tab6 = {$MarkOUTLine[1],$MarkOUTLine[2]};
			@tab7 = {$MarkOUTLine[1],$MarkOUTLine[2]};
			@tab8 = {$MarkOUTLine[1],$MarkOUTLine[2]};
 
			print SORTIE "$MarkOUTLine[0],$tab1[0],$tab1[1],$tab2[0],$tab2[1],$tab3[0],$tab4[1], $tab5[0],$tab6[1],$tab7[0],$tab7[1],$tab8[0],$tab8[1]\n";
 
			}
	}
}
 
 
close (MarkOUT); 
close (SORTIE);
close (ICCID);

Pouvez vous SVP m'aidez sur la solution, je sais qu'il faut utiliser les hash, mais j'ai des difficultés a utiliser les hash.

Merci.