求助 keys 语句

求助 keys 语句

my $hash = ();
$hash->{"aa"} = "aa";
$hash->{"bb"} = "bb";

if( keys %{$hash} > 0 )
{
     print "hello world\n";
}

上面的 if( keys %{$hash} > 0 ) 用于 判断hash是否有值,这样可否啊?
keys %{$hash} 当遇到算术运算符的时候是不是自动解释为 数组个数? 另 单独print  keys %{$hash}  ; 打印元素值
hash我知道%hash的定义方法,不知道$hash的方法哦。。。~ 你的是不是对滴?~
keys HASH
         Returns a list consisting of all the keys of the named hash. (In
         scalar context, returns the number of keys.)
I see, if( keys %{$hash} > 0 ) 这样 优先级方面 和  keys %{$hash} 当遇到算术运算符的时候 比如 =, >等等是否和scalar ( keys %{$hash} ) 同等效果 都返回长度。
>0是多余的
判断存在与否是true和false...是真假判断,不是数值比较,所以不能用“>0”...
perl碰到 list >0,  会把前面list  转成scalar 变成 list 里面的个数...
用来比较 >0 ..看起来没什麽问题呀...
只是这样写太精简...如果再加上其他内容, 有时候Perl会错乱给你不一样的答案...
建议还是先转成array.. @ary = keys %{$hash};

再去看里面的个数是否大於0 比较好....


QUOTE:
原帖由 apile 于 2008-7-10 12:55 发表
perl碰到 list >0,  会把前面list  转成scalar 变成 list 里面的个数...
用来比较 >0 ..看起来没什麽问题呀...
只是这样写太精简...如果再加上其他内容, 有时候Perl会错乱给你不一样的答案...
建议还是先转成array.. @ary = keys %{$hash};

再去看里面的个数是否大於0 比较好....

这个就有点多余了。


QUOTE:
原帖由 MMMIX 于 2008-7-10 22:16 发表

这个就有点多余了。

看用途吧...
我的代码是要给别人维护用的..写的太精简...对大家都没好处...
写简单又明白的代码...对我,对别人都有好处...