On 2012-01-16 04:53, oldyork90 wrote:
> I have a string that contains numbers and ranges of numbers, like
>
> '1 2 4-6 8 20 - 23' which translates as "include numbers 1, 2, 4, 5,
> 6, 8, 20, 21, 22, 23'
perl -Mstrict -wle '
my $data = "1 2 4-6 8 20 - 23 99-100";
my @data = map { s/\s+\z//, s/\A\s+//; length() ? $_ : () }
split /([^0-9]+)/, $data;
for my $i ( 0 .. $#data ) {
splice @data, $i, 1,
( $data[ $i - 1 ] + 1 .. $data[ $i + 1 ] - 1 )
if $data[ $i ] eq "-";
}
print "include numbers ", join ", ", @data;
'
include numbers 1, 2, 4, 5, 6, 8, 20, 21, 22, 23, 99, 100
--
Ruud
|