Being able to see the variables is good, but the other benefits you mention sort of went out the window with references. Some $foo might be a simple scalar, as the sigil implies, but it might also be the gatekeeper to a huge complex data structure, which may or may not be an object. We have ref and Scalar::Util::blessed to help figure that out at run time (thank goodness), but those don't help at comprehension time. It's hard to look at any code that's heavy in objects and get a sense of what some $foo really is if it doesn't have a good name.