Bonjour à tous,
J'ai des données sous cette forme :
Que je place dans un array de array.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
$tab[$i][$j]
Par exemple :
si
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');
je veux que mon array de array soit réorganisé ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part my @order = ('Characteristics.Strain.', 'Source.Name', 'Characteristics.Organism.', 'Characteristics.Subject.ID.');
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.
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');
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; }
Partager