I think it's worth noting that both perl -MO=Concise -e 'do {next unless $x}' and perl -MO=Concise -e 'do {$x||next}' produce exactly the same output (at least on v5.26):
9 <@> leave[1 ref] vKP/REFC ->(end) 1 <0> enter ->2 2 <;> nextstate(main 1 -e:1) v:{ ->3 - <1> null vK*/1 ->9 8 <@> leave vKP ->9 3 <0> enter v ->4 4 <;> nextstate(main 2 -e:1) v:{ ->5 - <1> null vK/1 ->8 6 <|> or(other->7) vK/1 ->8 - <1> ex-rv2sv sK/1 ->6 5 <$> gvsv(*x) s ->6 7 <0> next v* ->8
See the last four lines in particular. If there's no difference in the ops, then B::Deparse, which "generates perl source code based on the internal compiled structure", probably won't be able to tell the difference either.
Minor edits.
In reply to Re: Abuse of "or next" in expressions and "next" that returns value
by haukex
in thread Abuse of "or next" in expressions and "next" that returns value
by vr
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |