Yes, 42 is turned into the string "42" which is interpreted as a class name. Basically, anything that's not a reference is stringified by the arrow operator.
Update: See The Arrow Operator in perldoc.
map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]