in reply to Extracting Ranges from Sequences using hashes

Or you could let Number::Range do it for you:
use strict; use warnings; use Test::More; use Number::Range; sub get_numbers_from_ranges { my @ranges = split ',', shift; my @numbers = (); for my $range (@ranges) { my ($start, $end) = split '-', $range; push @numbers, ($end) ? Number::Range->new("$start..$end")->range() : $start; } return \@numbers; } plan tests => 2; is_deeply( get_numbers_from_ranges("2-8,10-13,18"), [ 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 18 ] ); is_deeply( get_numbers_from_ranges("6-9,1-3,11"), [ 6, 7, 8, 9, 1, 2, 3, 11 ]); __END__
$ prove 713553.pl 713553....ok All tests successful. Files=1, Tests=2, 0 wallclock secs ( 0.04 cusr + 0.01 csys = 0.05 C +PU)
--
No matter how great and destructive your problems may seem now, remember, you've probably only seen the tip of them. [1]