#!/usr/bin/perl -w use strict; use warnings; my(%data); foreach my $filename (@ARGV) { open(GSE, "$filename"); my(@samples); T:while(my $ligne = ) { $ligne =~ s/[\r\n]//g; my @t = split(/\t/, $ligne); if($. == 1) { shift(@t); @samples = @t; next T; } my $probe = shift(@t); for(my $i = 0; $i<@t; $i++) { $data{$probe}{$samples[$i]} = $t[$i]; $data{'samples'}{$samples[$i]}++; } } close(GSE); } my @samples = keys%{$data{'samples'}}; print "Probe\t".join("\t",@samples)."\n"; foreach my $probe (keys %data) { unless($probe eq 'samples') { print "$probe\t".join("\t", @{$data{$probe}}{@samples})."\n"; } }