I've just released Sub::Call::Tail which allows for a much more natural tail call syntax than Perl's goto built in.
It provides a tail keyword that modifies normal invocations to behave like goto &sub, without needing the ugly @_ manipulation.
Instead of this horrible kludge:
@_ = ( $foo, $bar ); goto &foo;
You can now write:
tail foo($foo, $bar);
And much more importantly this method call emulation atrocity:
@_ = ( $object, $foo, $bar ); goto $object->can("foo");
Can now be written as:
tail $object->foo($foo, $bar);
Finally we can write infinitely tail recursive and CPS code with a constant stack space, without the syntactic letdown that is goto. Lambdacamels rejoice!
Thanks so much to Zefram for his numerous tests and contributions.