$_='A # B # 1 # 2'; print join ' # ', sub { map @_[$_,$_+@_/2], 0..$#_/2 }->( split / # / ); #### sub pair { map @_[$_,$_+@_/2], 0..$#_/2 } $_='A # B # 1 # 2'; print join ' # ', pair split / # /; #### sub pair { map @_[$_,$_+@_/2], 0..$#_/2 } sub pair { map $_[($_&1)*@_/2+($_>>1)], 0..$#_ } sub pair { @_[ map +($_,$_+@_/2]), 0..$#_/2 ] } sub pair { @_[ map ($_&1)*@_/2+($_>>1), 0..$#_ ] }