in reply to Recurse using goto; Bug?

Why use the goto at all? A do while loop does the same thing nicely.

use strict; use warnings; test1(); sub test1 { while () { my $v = 0; next if $v = get_true(); } } sub get_true { 1 }

My question comes as a result of a lifetime of being told to avoid goto--it's considered harmful, after all.

I've seen this pattern of recursion via goto() show up here a few times and I am interested in the pros and cons of this technique.

Now, I can see the harm in abusing goto, but IMO the original code hardly counts as abuse. How does the OP's code behave differently than my while loop? Are there any significant differences that would make the decision to use one approach or the other anything but stylistic choice?


TGI says moo

Replies are listed 'Best First'.
Re^2: Recurse using goto; Bug?
by runrig (Abbot) on Jul 18, 2008 at 22:17 UTC
    goto &function is completely different than the type of goto that you've been told to avoid (see the docs). Using tail-recursion is a common and efficient technique in some other languages. Using goto for tail-recursion in perl is (supposed to be) efficient memory-wise (though the OP has proven otherwise), but not at all efficient speed-wise, so the while loop (or some other normal iteration) as you suggest would generally be preferred (if speed is at all an issue).