All these has their more or less intuitive explanations except for the $i and $k examples, and possibly also the $1 example. I believe you did this test on ActivePerl which is unfortunate since ActivePerl is broken. Try that on coreperl and you'll see that the $i and $k examples too will emit warnings--just as they should.