use strict; use warnings; use Data::Dumper; my($File,$FILE_FH,$data,@total_data,$new,@gi); $File="./fasta.txt"; open $FILE_FH, '<', $File or die "Failed to Open File $File for $!"; $data=<$FILE_FH>; @total_data=split(/gi\|(\d+)\|/,$data); foreach $new(@total_data) { push @gi,$new if($new =~ /^\d+$/); } print Dumper @gi;