sub expandRanges { my @pieces = split /\s*,\s*/, $_[0]; my @expanded = (); foreach my $piece (@pieces) { next if $piece !~ /\A[\d\-\s]+\z/; if ($piece =~ /-/) { my @tmp = split /\s*-\s*/, $piece; my $diff = length($tmp[0]) - length($tmp[1]); $tmp[1] = substr($tmp[0], 0, $diff) . $tmp[1] if $diff; push @expanded, $tmp[0] > $tmp[1] ? reverse ($tmp[1]..$tmp[0]) : ($tmp[0]..$tmp[1]) ; } else { push @expanded, int $piece; } } return @expanded; }