my $ranking_dgp = 0; do { my $gene = $1; my $chromosone = $2; my $score_dgp = $3; $ranking_dgp = $ranking_dgp + 1; push @gene_score, [ $gene, $chromosone, $score_dgp, $ranking_dgp ]; } while ( $text =~ m{gene\=(ENSG\d+).*?\s+(\d+|X|Y)\s+.*?.*?.*?.*?\s(\d.\d+)\s\<\/TD\>}gsm); print Dumper @gene_score;