in reply to Print series of numbers

A clean solution:
sub collapse_seq { return () if !@_; my @list = sort { $a <=> $b } @_; my @seqs = [ (shift(@list)) x 2 ]; for ( @list ) { if ($seqs[-1][1] + 1 == $_ ) { $seqs[-1][1] = $_; } else { push @seqs, [ $_, $_ ]; } } return map { $_->[0] == $_->[1] ? $->[0] : "$->[0]-$->[1]" } @seqs; }