my @channels = (1, 1, 0, 1, 1, 1, 0); my $val = join ',', map { $_ + 1 } grep { $channels[$_] } 0 .. $#channels; $val =~ s/(\d+),(\d+)/$1+1 == $2 ? "$1-$2" : "$1,$2"/eg; print $val, $/;