while () { chomp; my ($chr, $start, $end, $gene, $ex) = split(/\t/, $_); my $gene_key = $chr.":".$gene; my $cur_gene = $gene_hash{$gene_key}; $$cur_gene{min_start} = $start unless $$cur_gene{min_start}<$start; $$cur_gene{max_end} = $end unless $$cur_gene{max_end}>$end; $$cur_gene{max_ex} = $ex unless $$cur_gene{max_ex}>$ex; $gene_hash{$gene_key} = $cur_gene; }