push @{$_ & 1 ? \ @odd : \ @even }, $_ for @nums; #### @nums = 1..20; /.*(?=.)([13579]$)?(?(1)(?{${"\@nums::${_}::"}++})|(?{${"\@nums::${_}::"}--}))/ for @nums; printf "%d %s\n", $_, ${"\@nums::$_"} > 0 ? odd : even for keys %{"\@nums::"};