in reply to Uninitialized or not?
foreach (undef) { } [download]
Hmm, disagree. According to your comment,
foreach (undef) { print "foo\n"; } [download]
does nothing (well, you said 'meaningless') .. when in fact it prints out 'foo' once, since 'undef' can be interpreted as an array with a single calue, 'undef'.