while (<>) {
# $_ holds the line read - process it here
}
####
... (keys ...
####
... (sort {length $sequences{$a} <=> length $sequences{$b} } keys ...
####
$ cat pm_1144803_fasta.txt
>SequenceID|1234_Gene1
CTTTTAAGCTGATTAGGCTTTTATACCATTAGATTTAGTAACTATTGTCTTTTAA
>SequenceID|9876_Gene2
GTGCTGTCTTAAGTTGAACAGAGTGTGGGAGGAAATATAAGCAAAGTTATTCCGTAGAATT
>SequenceID|4567_Gene3
CATCCTCCTTTACACCCCACAAACATTTGGCAACCCCTGATAGGTTTCTTTCTTGTGGA
####
$ cat pm_1144803_fasta_seq_len_sort.pl
#!/usr/bin/env perl
use strict;
use warnings;
my (%sequences, $seq_key);
while (<>) {
chomp;
if (/^>/) {
$seq_key = substr $_, 1;
}
else {
$sequences{$seq_key} = $_;
}
}
foreach my $key (
sort {length $sequences{$a} <=> length $sequences{$b} } keys %sequences)
{
my $len = length ($sequences{$key});
print "$key:$len\n";
}
####
$ pm_1144803_fasta_seq_len_sort.pl pm_1144803_fasta.txt
SequenceID|1234_Gene1:55
SequenceID|4567_Gene3:59
SequenceID|9876_Gene2:61