sub a { @_<2 ? @_ : (pop,shift,&b) } sub b { @_<2 ? @_ : (shift,pop,&a) } print a(1..8), "\n"; #### sub a { @_ ? (@_[-1,0,1,-2],a(@_[2..$#_-2])) : () } print a(1..8), "\n"; #### sub a { @_ ? (pop,shift,shift,pop,&a) : () } print a(1..8), "\n";