in reply to Exiting subroutine via next

why this behaviour ? what is the logic behind it ? wouldn't it be beneficial if the interpreter threw a error for invalid use of next, in this case ?
It's something you shouldn't do without a good reason, hence the warning, but why do you want it to throw an error by default?

In any case, you can use warnings 'all', 'FATAL' => 'exiting'; if that's to your liking.