由于工程需要,我要对数据库中所有设备名称按ascii码顺序出excel报表,因为跟其他数据一起存在一个哈希结构中,所以我要用到高级排序。
sub by_DEVICE_NAME (){
$ItemValue->{$a}{'DEVICENAME'} <=> $ItemValue->{$b}{'DEVICENAME'};
}
我的本意是按 ascii 字符排序,结果却非我所愿,根本就不排序,
后来,翻出《perl 入门》,果断改成
sub by_DEVICE_NAME (){
$ItemValue->{$a}{'DEVICENAME'} cmp $ItemValue->{$b}{'DEVICENAME'};
}
看出区别了吧?
字符比较用 cmp ,数字比较用 <=>。
记下来当是一个教训,基础知识还得看。