However, the hash itself may be auto-vivified in spite of using exists(). In fact, the hash will be auto-vivified by the use in exists()! This may be what davido was thinking about. Check perlref for examples of how the end-point (the hash element) is protected from auto-vivification by the above constructs, by the leading components of the hash expression are not.