$_ = join ',', sort{$a<=>$b} (1, 2, 3, 6, 9, 10, 13, 22, 20, 19, 15, 21); s/((\d+),)/$2 + 1 == $' ? "$2-" : $1/ge; s/(\d+-)[-\d]+-(\d+)/$1$2/g; $_; # the answer