|
|
| go ahead... be a heretic | |
| Perl Monks |
preview pageby vroom |
| log BrowserUk out | BrowserUk | The Monastery Gates | Super Search | | Seekers of Perl Wisdom | Meditations | PerlMonks Discussion | Library | | Obfuscation | Poetry | Cool Uses For Perl | Snippets | Code | Q&A | | Perl News | Reviews | Tutorials | Newest Nodes | Offering Plate | |
| on Mar 01, 2000 at 01:52 GMT ( #11911=strangedoc: print w/ replies, xml ) | Need Help?? |
Re: More efficient way to lookup with 2 AoA's.Like everyone says--whenever you need to do a lookup in Perl: Think hashes, #! perl -slw
use strict;
use Data::Dumper;
my @gene_score = (
[ "gene_name_0", "score_0" ],
[ "gene_name_1", "score_1" ],
# ...
[ "gene_name_400", "score_400" ]
);
my @gene_start_stop_chr = (
[ "gene_name_0", "start_0", "stop_0", "chr_0" ],
[ "gene_name_1", "start_1", "stop_1", "chr_1" ],
# ...
[ "gene_name_400", "start_400", "stop_400", "chr_400" ],
[ "gene_name_30000", "start_30000", "stop_30000", "chr_30000" ]
);
## Build a hash from the lookup array
my %gene_start_stop_chr = map{
$_->[ 0 ] => [ @{ $_ }[ 1 .. 3 ] ]
} @gene_start_stop_chr;
## Use it to map the inputs to results
my @results = map{
[
$_->[ 0 ],
$_->[ 1 ],
@{ $gene_start_stop_chr{ $_->[ 0 ] } }
]
} @gene_score;
print Dumper \@results;
__END__
P:\test>377857
$VAR1 = [
[
'gene_name_0',
'score_0',
'start_0',
'stop_0',
'chr_0'
],
[
'gene_name_1',
'score_1',
'start_1',
'stop_1',
'chr_1'
],
[
'gene_name_400',
'score_400',
'start_400',
'stop_400',
'chr_400'
]
];
</p>
If something looked unlike you expected it to you might need to check out Writeup Formatting Tips
|
|