in reply to Re^3: <STDIN> not initializing $_
in thread <STDIN> not initializing $_

An extra edge case:
perl -le'while($a = 0){print "$a ok\n"; last }' # perl -le'while($a = 1){print "$a ok\n"; last }' # prints 1 ok
But the "implicit test for defined" is built into the while( ) by language design, there is no extra magic about that in any context?