#!/usr/bin/perl -l # http://perlmonks.org/?node_id=1168288 use strict; use warnings; my $list = '0001,0002,0003,011,012,013,015'; print $list =~ s/\b(\d+)(?{$1})\K(?:,(\d+)\b(??{++$^R!=$2}))+/-$2/gr;