My solution is similar to GrandFather's. If still curious ...
Just use a plain array ...
use warnings; use strict; use Data::Dumper; $Data::Dumper::Indent = 1; my $spec = '1-4,9-11,6,8,3,2'; my @out; my %seen; for my $range ( split ',' , $spec ) { my @range = split '-' , $range; push @out , map { # Subtract for array indexing. my $k = $_ - 1 ; # Uniquify (keep only the numbers unseen). ! $seen{ $k }++ ? $k : (); } scalar @range == 1 ? @range : $range[0] .. $range[1] ; } print Dumper( \@out );
In reply to Re: Extracting Ranges from Sequences using hashes
by parv
in thread Extracting Ranges from Sequences using hashes
by harishnuti
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |