in reply to retrieving in the correct order

# If the files are not too large... # Read in the sequence file putting the data into a hash use strict; my %hash; while (<DATA>) { chomp $_; my ($id,$protein) = /^gi\|(.+?)\|.+\|(.+)$/; ## Save what you nee +d $hash{$1} = $2; } # Now use the second file to print out the hash my @array2 = qw(13470319 13470331 15460001 13490216); map { print "$hash{$_}\n"; } @array2; __DATA__ gi|13490216|ref|NP_101899.1|protein for 216 gi|13470331|ref|NP_101896.1|protein for 331 gi|15460001|ref|NP_101898.1|protein for 001 gi|13470319|ref|NP_101897.1|protein for 319

Replies are listed 'Best First'.
Re^2: retrieving in the correct order
by Animator (Hermit) on Dec 16, 2004 at 20:21 UTC
    A hash slice, as mentioned in my first post would be faster (I guess)...

    something like: print join("\n", @hash{@array2});

Re^2: retrieving in the correct order
by Animator (Hermit) on Dec 16, 2004 at 21:00 UTC

    Another thing (just noticed it now) why would you be using map?? map returns an array (filled with x times 1 (return value of print)), which you aren't using at all...

    What should be used is for/foreach (or a hash slice ofc).

      The map method was already sitting in my 'test' template. The foreach method is a better option, but I liked your hash slice method even better. ++