The documentation for ref() mentions several possible return values. I understand most of them, but not REF, IO, and LVALUE. How would
LVALUE
perl5.8 -e '{$a = "aaa"; $b = \substr($a, 0, 2); print "$$b\n"; print ref($b)."\n"}'
aa
LVALUE
This one is explained in perldoc -f ref
REF
perl5.8 -e '{$a = "aaa"; $b = \\$a; print ref($b)."\n"}'
REF
It's basically a reference to a value that is itself a reference.
Probably would have been better to do $b = \$a; $c = \$b; print ref($c)