use 5.010; use strict; use warnings; sub foo { say 'Tail-calling bar...'; @_ = (1, 2); goto &bar; say 'This should never be reached!'; } sub bar { my ($a, $b) = @_; say "bar($a, $b) called"; } say 'Calling foo...'; foo(); say '... returned from foo';