sub _text_to_list # { my $string = shift; $string =~ s/\s+//g; return \@{ [ sort { $a <=> $b } keys %{ { map { $_ => $_ } map { /^(\d+)-(\d+)$/ ? ( $1 .. $2 ) : /^0*(\d+)$/ ? ($1) : () } split( ',', $string ) } } ] }; }