=over =item each HASH When called in list context, returns a 2-element list consisting of the key and value for the next element of a hash, so that you can iterate over it. When called in scalar context, returns the key for only the "next" element in the hash. (Note: Keys may be C<"0"> or C<"">, which are logically false; you may wish to avoid constructs like C for this reason.) Entries are returned in an apparently random order. When the hash is entirely read, a null array is returned in list context (which when assigned produces a FALSE (C<0>) value), and C in scalar context. The next call to C after that will start iterating again. There is a single iterator for each hash, shared by all C, C, and C function calls in the program; it can be reset by reading all the elements from the hash, or by evaluating C or C. If you add or delete elements of a hash while you're iterating over it, you may get entries skipped or duplicated, so don't. The following prints out your environment like the printenv(1) program, only in a different order: while (($key,$value) = each %ENV) { print "$key=$value\n"; } See also C and C. =back