perlfunc says:

"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 function calls in the program; it can be reset by reading all the elements from the hash, or by evaluating keys HASH or values HASH."

If run the following program, see how each "each" continue from the last one. (The 4th print get a warning which indicates the end of the iteration). The 5th restart from the begining:

use strict; use warnings; my %hash = ('a' => 1, 'b' => 2, 'c' => 3); my $key = (each(%hash))[0]; print $key; $key = (each(%hash))[0]; print $key; $key = (each(%hash))[0]; print $key; $key = (each(%hash))[0]; print $key; $key = (each(%hash))[0]; print $key;

The following code resets the iteration with a keys(), see how the second pair returns the same results as the first pair:

use strict; use warnings; my %hash = ('a' => 1, 'b' => 2, 'c' => 3); my $key = (each(%hash))[0]; print $key; $key = (each(%hash))[0]; print $key; keys(%hash); $key = (each(%hash))[0]; print $key; $key = (each(%hash))[0]; print $key;

In reply to Re: Caller, caller, wherefore art thou, caller? by pg
in thread Caller, caller, wherefore art thou, caller? by Ovid

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.