or download this
Use of "defined" on aggregates (hashes and arrays) is deprecated. It
+used to report whether memory for that aggregate has ever been alloca
+ted. This
behavior may disappear in future versions of Perl. You should instead
+ use a simple test for size:
if (@an_array) { print "has array elements\n" }
if (%a_hash) { print "has hash members\n" }