#!/usr/bin/perl use warnings; use strict; open OUT1, '>', 'GENEID.out' or die "can not create 'GENEID.out' $!"; open OUT2, '>', 'PROTID.out' or die "can not create 'PROTID.out' $!"; open FILE, '<', 'input.txt' or die "can not open 'input.txt' $!"; while ( my $line = ) { select OUT1 if $line =~ /^>data_\d+\s+GENEID_\d+\b/; select OUT2 if $line =~ /^>data_\d+\s+PROTID_\d+\b/; print $line; }