如何对hash里值的某个字段排序?

如何对hash里值的某个字段排序?

$h{$.} = [ split ];
        我想对第一个字段进行数字排序,例如:
        sort {$h{$a}[0] <=> $h{$b}[0] } ……
我的问题是:
1、sort的时候不知道怎样对值的第一个字段sort;
2、不知道用什么来保存sort的结果(在下面我还要用hash的字段)。

        (后续处理是这样的:排序完后用二分查找法找记录, 找到后print,类似如下格式:
        print "$h{$_}[2]\n" if ($t > $h{$_}[0] && $t < $h{$_}[1]);)

希望指点,谢谢!

找论坛前面的文章。
或者看 perldoc -f sort。
已经看过,没发现这种对值的字段排序的,理解力差,希望多多指教,谢谢!
sort {$h{$a}[0] <=> $h{$b}[0] }。。。。
这个不就实现了你说的对第一个字段的数字排序了吗 改成cmp就是字符排序。sort 返回一个列表环境,直接定义一个列表赋值就可以吧
楼上你的意思是@t=sort {$h{$a}[0] <=> $h{$b}[0] } keys %h   ?
但是$h{$_}[0]并不是key啊,也可以这样sort吗?

如果上面可行,@t保存了每行的$h{$_}[0] 、$h{$_}[1] 、$h{$_}[2] ,我怎么把它们取出来?先计算出行数n,foreach $y(0..n-1){print $t[$y*3],$t[$y*3+1],$t[$y*3+2];}吗?

看 perldoc -f sort 里面有许多例子。
有个十分钟就能看懂。
你对键排序,@t中当然存放的是排好序的键,用一个for循环就可以取出值了