in reply to How do I use the map command for this?
"How do I use the map command for this?"
No idea. :-)
"I am pretty sure I need to use the map command"
Why?
In the code below, I simplified the data so that it's easier to see what's happening. I've also jumbled it up to demonstrate the two sorts — you may not need or want either of these (biological data can be huge, so don't do any sorting unless it's absolutely necessary).
#!/usr/bin/env perl use strict; use warnings; my %res; { local $/ = "\n>"; while (my $record = <DATA>) { chomp $record; $record = substr $record, 1 if $. == 1; $record =~ s/\s*\z//m; my ($id, $anno_seq) = split /\|/, $record, 2; push @{$res{$anno_seq}}, $id; } } print '>', join('|', (sort @{$res{$_}}), $_), "\n" for sort { $res{$a}[0] cmp $res{$b}[0] } keys %res; __DATA__ >id7|anno2 GHI >id1|anno1 ABC >id6|anno1 ABC >id4|anno2 GHI >id2|anno3 DEF >id3|anno1 ABC >id5|anno1 ABC
Output:
>id1|id3|id5|id6|anno1 ABC >id2|anno3 DEF >id4|id7|anno2 GHI
— Ken
|
|---|