package Foo; sub TIEHASH { bless {}, shift; }; sub FIRSTKEY { wantarray ? print "Array\n" : print "Scalar\n" }; *NEXTKEY = *FIRSTKEY; sub FETCH { return }; package main; tie %me, Foo; () = each %me; scalar each %me; __END__ Scalar Scalar