in reply to How to no goto or gosub

No goto, no label, no sub needed in this case. Just negate the condition:
if (not $gas_cost < 1) { stuff here } continue here
($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,

Replies are listed 'Best First'.
Re^2: How to no goto or gosub
by SimonPratt (Friar) on Jan 19, 2016 at 09:12 UTC

    I'm curious. Every post has suggested either if (not $gas_cost < 1) or if ($gas_cost >= 1). Am I the only one who immediately thought unless ($gas_cost < 1)?

    Do I just think strangely, or is unless too unclear for most people to consider using? (or is there some other reason for not using it?)

      The OP seemed as a beginner question to me. I tried not to introduce unnecessary details. On the other hand, I usually use unless in post-position only, to prevent an else from creeping in.
      ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,

        Yeah, that makes sense :)

      I find that unless() has a very small useful footprint. Sure, may be OK when there is a single condition:

      unless ($things_went_wrong) { # do some stuff }

      But, when there are multiple conditions, it gets tougher to keep straight:

      unless ($result < $HIGHEST_VALUE && ! $bad_results{$result}) { # stuff + }

      And then there is this legal, but almost much harder to follow, control structure:

      unless ($result) { ## Do some stuff } elsif (!$result) { ## Do some other stuff } else { ## yet other stuff... }

      In the end, 'unless(') is just a way to type 'if (!)', but with more keystrokes and it has a better chance of making your brain hurt. And, you never have to worry about decoding double negatives, or re-writing them if your control statements need to grow down the line if you just use 'if (!)'.

        And then there is this legal, but almost much harder to follow, control structure:

        I've often wondered how many brains would explode if there was an unless ( ... ) { ... } elsless ( ... ) { ... } else { ... } construct in the language :-)

        Cheers,

        JohnGG

        Yeah, I tend to stay away from elsif. Of course there are exceptions (aren't there always?), but I find that creating a logic flow that depends on lots of elsif calls just encourages people to continue expanding the structure long beyond the point it should have been refactored (case in point - one of our monolithic scripts has something like 30 or 40 chained elsif statements)

        Yes, I agree that unless has a small useful footprint, but I also think that if and elsif (especially the latter) are very easy to abuse.

        Hmm, my personal opinion is that unless $condition is clearer than if !$condition and if $condition is clearer than unless !$condition. Horses for courses, I guess :)