735012659e5e6a117f995dca62dcbaf5f29dd001
[perl.git] / do / each
1 int
2 do_each(TARG,hash,gimme,arglast)
3 STR *TARG;
4 HASH *hash;
5 int gimme;
6 int *arglast;
7 {
8     STR **st = stack->ary_array;
9     register int sp = arglast[0];
10     HENT *entry = hiternext(hash);
11     int i;
12     char *tmps;
13
14     if (mystrk) {
15         str_free(mystrk);
16         mystrk = Nullstr;
17     }
18
19     if (entry) {
20         if (gimme == G_ARRAY) {
21             tmps = hiterkey(entry, &i);
22             if (!i)
23                 tmps = "";
24             st[++sp] = mystrk = str_make(tmps,i);
25         }
26         st[++sp] = TARG;
27         str_sset(TARG,hiterval(hash,entry));
28         STABSET(TARG);
29         return sp;
30     }
31     else
32         return sp;
33 }