in reply to Uninitialized value in reverse

while doesn't iterate $_ over the expression. while (<>) is special, it's an abbreviation of
while (defined($_ = <>))
By using anything more than the diamond operator (or an assignment of it), the magic is gone. So, reverse <DATA> reverses DATA, but doesn't assign anything to $_.

See also I/O Operators in perlop.

map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]