In most cases it's used in combination with AUTOLOAD because after delegating the call you don't want to return to the AUTOLOAD routine, hence a call frame must be skipped.
Some use it to implement continuations or coroutines, but it's not very performant compared to languages like LISP.
Similarly you can implement case/switch mechanism using it with named subroutines instead of labels, but without much of a spead gain compared to a classical dispatch table.
The author in question is implementing a state machine via dispatch tables and doesn't want the call stack to fill up with every state switch.
He could also have used classic goto LABLE; , but (obviously) using subs gives him more flexibility in maintenance than spaghetti code would.
Cheers Rolf
(addicted to the Perl Programming Language :)
see Wikisyntax for the Monastery
In reply to Re^2: Weird syntax. What does this goto statement do? ( 'goto &NAME' use cases)
by LanX
in thread Weird syntax. What does this goto statement do?
by harangzsolt33
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |