sub oddEls; sub oddEls{ @_ ? (( shift, shift )[ 0 ], oddEls @_) : () } print oddEls 'aaabbcddddaee' =~ /((.)\2*)/g;; aaa bb c dddd a ee