my @channels = (1, 1, 0, 1, 1, 1, 0); my @vals = map { $_ + 1 } grep { $channels[$_] } 0 .. $#channels; my $val = num2range( @vals ); print $val, $/; sub num2range { local $_ = join ',' => sort { $a <=> $b } @_; s/(?