「だからどうだ」ってことですけど、(perlだとreverseあるので本来なら1オペで終わっちゃうけど)とりあえずループを使わずに与えた配列を逆にするコードの自己最短コードはこうなりました:

sub r{@_?(pop,r(@_)):()};
もう少し読みやすく展開するとこんな感じですね。ただの再帰処理です:

sub myreverse {
   if (@_ > 0) {
      return (pop @_, myreverse(@_));
   } else {
      return ();
   }
}
popで配列の最後の要素を最初に回して、残りを再帰処理してるだけー