#!/usr/bin/perl -l # http://perlmonks.org/?node_id=1166921 use strict; use warnings; my @array = ("1","2","3","5","6","7","9"); my @ranges = "@array" =~ s/\b(\d+)(?{$1})\K(?: (\d+)\b(??{++$^R!=$2}))+/:$2/gr =~ /\S+/g; print "@ranges";