in reply to Re^4: What is true and false in Perl? (undef,undef)in thread What is true and false in Perl?
What do you think ref does?
In your example code, $a doesn't contain a reference. It contains a false value. ref does exactly this: "Returns a non-empty string if EXPR is a reference, the empty string otherwise."