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
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Extracting Ranges from Sequences using hashes
by harishnuti (Beadle) on Sep 26, 2008 at 02:12 UTC |