deprecated message from defined

http://perldoc.perl.org/functions/defined.html

Use of defined on aggregates (hashes and arrays) is deprecated. It used to report whether memory for that aggregate had ever been allocated. 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"   }