I thought next is just another way to say goto
Well, it's not. You can see that next and goto compile to different ops internally:
$ perl -MO=Concise -e 'X: next X' 4 <@> leave[1 ref] vKP/REFC ->(end) 1 <0> enter ->2 2 <;> nextstate(X: main 1 -e:1) v:{ ->3 3 <"> next("X") v ->4 -e syntax OK $ perl -MO=Concise -e 'X: goto X' 4 <@> leave[1 ref] vKP/REFC ->(end) 1 <0> enter ->2 2 <;> nextstate(X: main 1 -e:1) v:{ ->3 3 <"> goto("X") v ->4 -e syntax OK
Another difference is this warning here:
$ perl -wE 'sub f() { next X }; X: for (1) { f }' Exiting subroutine via next at -e line 1.
which you don't get with goto. And of course the fact that the code above terminates, but doesn't if you replace 'next' with 'goto'.
In reply to Re: How does next label work?
by moritz
in thread How does next label work?
by PerlOnTheWay
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |