When the hash is entirely read, a null array is returned in list context (which when assigned produces a false (0) value), and "undef" in scalar context. The next call to "each" after that will start iterating again. There is a single iterator for each hash, shared by all "each", "keys", and "values" func- tion calls in the program; it can be reset by reading all the elements from the hash, or by evaluating "keys HASH" or "values HASH".