http://www.perlmonks.org?node_id=1076062


in reply to Re^3: Can you make this code shorter and/or quicker as well?
in thread Can you make this code shorter and/or quicker as well?

Here's one option:

use strict; use warnings; for my $fastaRec ( extract_query_data('fastaFile.fa') ) { print $fastaRec, "\n"; } sub extract_query_data { my ($file) = @_; my @arr; local $/ = '>'; open my $fh, '<', $file or die $!; while (<$fh>) { chomp; my ( $id, $seq ) = /(.+?\n)(.+)/s or next; $seq =~ s/\s+//g; push @arr, ">$id$seq"; } close $fh; return @arr; }

You'll note that the subroutine returns an array of fasta records.