Bonjour à tous,

J'ai des données sous cette forme :
Source.Name Characteristics.Subject.ID. Characteristics.Strain. Sample.Name
atenolol_3_1000_1 102599 RATM Rattus norvegicus
atenolol_3_1000_2 102613 RATM Rattus norvegicus
atenolol_3_1000_3 102633 RATM Rattus norvegicus
Que je place dans un array de array.

$tab[$i][$j]

Par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
@{$tab[0]} = ('Source.Name', 'Characteristics.Subject.ID.', 'Characteristics.Strain.', 'Characteristics.Organism.');
@{$tab[1]} = ('atenolol_3_1000_1', '102599', 'RATM', 'Rattus norvegicus');
@{$tab[2]} =  ('atenolol_3_1000_2', '102613', 'RATM', 'Rattus norvegicus');
@{$tab[3]} =  ('atenolol_3_1000_3', '102633', 'RATM', 'Rattus norvegicus');
si
Code : Sélectionner tout - Visualiser dans une fenêtre à part
my @order = ('Characteristics.Strain.', 'Source.Name', 'Characteristics.Organism.', 'Characteristics.Subject.ID.');
je veux que mon array de array soit réorganisé ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
@{$tab[0]} = ('Characteristics.Strain.', 'Source.Name', 'Characteristics.Organism.', 'Characteristics.Subject.ID.');
@{$tab[1]} = ('RATM', 'atenolol_3_1000_1', 'Rattus norvegicus' , '102599');
@{$tab[2]} =  ('RATM', 'atenolol_3_1000_2', 'Rattus norvegicus', '102613');
@{$tab[3]} =  ('RATM', 'atenolol_3_1000_3', 'Rattus norvegicus', '102633');
Les valeurs excédentaires, ne se trouvant pas dans @order, doivent être supprimées. @{$tab[1]} aura la même taille que @order et sera plus petite que sa taille initiale.
Si ce n'est pas clair, n'hésitez pas à me poser des questions. Je vais continuer de regarder du côté de List::Compare et de List::MoreUtils ... et sort.


D'avance merci.

Voici mon code :
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
#!/usr/bin/perl
 
use strict;
use warnings;
 
use WWW::Mechanize::Query;
use Data::Dumper;
 
my $mech = WWW::Mechanize::Query->new();
 
my $url= "ftp://ftp.ebi.ac.uk/pub/databases/microarray/data/dixa/DrugMatrix/archive/thighMuscle/s_thigh_muscle.txt";
$mech->get($url);
 
my @orders = qw/Sample.Name
Source.Name
Characteristics.Subject.ID.
Characteristics.Strain.
Characteristics.Organism.
Characteristics.Sex.
Factor.Value.Age.
Characteristics.AgeUnit.
Characteristics.Organ.
Characteristics.Tissue.
Characteristics.Cell.
Characteristics.Assay.Type.
Characteristics.Biological.Replicate.
Characteristics.Technical.Replicate.
Factor.Value.Compound.
Characteristics.StdInChIKey.
Comment.chEMBL.ID.
Characteristics.Eniantiomer.
Characteristics.Compound.Class.
Characteristics.Control.
Characteristics.Sample.Match.
Factor.Value.Dose.
Characteristics.DoseUnit.
Factor.Value.Dose.Duration.
Characteristics.Dose.DurationUnit.
Factor.Value.Dose.Frequency.
Characteristics.Vehicle.
Characteristics.Route.
Factor.Value.Sample.TimePoint.
Characteristics.Sample.TimePointUnit.
Characteristics.Treatment.Group./;
 
if ($mech->success()) {
 
	my ($file_name) = ($url =~ m/([^\/]*\.txt)/);
	print $file_name."\n";
 
	my @data = split (/\n/, ${$mech}{'content'});
 
	my @tab;	
	foreach my $i (0..$#data){ 
		 @{$tab[$i]} = split (/\t/, $data[$i]);
	}
 
	print Dumper @tab;
 
}