Quelque chose comme cela (non testé):
1 2 3 4 5 6 7 8 9 10 11 12 13
| my %hash;
$nom_echantillon = "Y1";
while (my $line = <FILI_IN>) {
chomp $line;
my ($region, @reste_de_la_ligne) = split /\s/, $line;
my $newline = join "\t", $region, $nom_echantillon, @reste_de_la_ligne, "\n";
if (defined $hash{$region}) {
$hash{$region} .= $newline;
}
else {
$hash{$region} = $newline;
}
} |
A la fin de ce processus, quand tu as lu tous tes fichiers, $hash{XXXX} va contenir un enregistrement multi-ligne regroupant toutes les lignes relatives à XXXX.
Il suffit alors de balayer le hash et d'imprimer les valeurs:
Par exemple, si l'ordre dans lequel les régions apparaissent n'a pas d'importance:
print foreach values %hash;
Si tu veux les régions par ordre alphabétique (ou plutôt "ASCIIbétique"):
1 2 3
| foreach my $region (sort keys %hash) {
print OUTFILE $hash{$region};
} |
Partager