use strict; use warnings; open my $in_fh, '<', "human...fa" or die $!; my $out_fh; while (defined(my $line = <$in_fh>)) { if ($line =~ /^>(.*)/) { my $id = $1; if ($out_fh) { close $out_fh or die $!; } open $out_fh, '>', $id or die $!; next; } if ($out_fh) { print $out_fh $line; } }