use 5.6.0; # for (??{ ... }) sub num2range { local $_ = join ',' => sort { $a <=> $b } @_; s/(?<!\d)(\d+)(?:,((??{$++1})))+(?!\d)/$1-$+/g; return $_; } [download]
In reply to List-to-Range generation by japhy