Why is the empty string preferred over undef?