cklester provided me a nice idea about expression:ItemCnt, Keys2ItemCnt
Now the expression:ItemCnt will get the object from the key, then
1. if this object is null (key does not exist), return (-1)
2. if this object is a number or a string (this is not a object type), return 0
3. if this object is a hash or a list, return the count of keys (items) in this object.
For example, hash = {"a":10,"b":20}
Hash.ItemCnt("") will return 2 (key = "" means root)
Hash.ItemCnt("a") will return 0
Hash.ItemCnt("a.c") will return (-1)