in reply to Extracting Ranges from Sequences using hashes

Get rid of the hash, at least for storing the numbers. I presume you need it to ensure numbers are unique if ranges overlap. I'd do something like:

use strict; use warnings; my @nums = get_numbers_from_ranges ('2,10-13,2-5'); print "@nums"; sub get_numbers_from_ranges { my @ranges = split ',', shift; my @numbers; my %seen; for my $range (@ranges) { my ($start, $end) = sort {$a <=> $b} split '-', $range; $end ||= $start; ! $seen{$_}++ and push @numbers, $_ for $start .. $end; } return @numbers; }

Prints:

2 10 11 12 13 3 4 5

Perl reduces RSI - it saves typing

Replies are listed 'Best First'.
Re^2: Extracting Ranges from Sequences using hashes
by harishnuti (Beadle) on Sep 26, 2008 at 02:12 UTC

    Thanks a lot , i got it .. Thanks everyone for suggestions, i have taken all suggestions which improved my skills a bit