Yes, that would undef the reference itself — but that might not
necessarily lead to the hash being undefined (which I think is what the OP is after...). undef %$hashRef, OTOH, would undefine the hash being referenced.
But I suspect the real question here is "why is the associated
memory not being freed?" :) If so, circular references (in data
structures held in the hash) might be the reason... Object::Destroyer might help in this case. Also see Re^3: Large Memory for a list of related modules that might help with locating circular references.