while ((my $begin, my $end) = each %exon_endpoints) { print get_exon($chromosome, $begin, $end), "\n\n"; } sub get_exon { my($chromosome, $begin, $end) = @_; # The arguments to substr are: string, beginning, length return substr($chromosome, $begin - 1, $end - $begin + 1); }