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