由于工程需要,我要对数据库中所有设备名称按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 ,数字比较用 <=>。
记下来当是一个教训,基础知识还得看。
本文介绍了一个使用Perl进行设备名称ASCII码排序的实际案例。作者最初尝试使用<=>操作符进行排序但未达到预期效果,通过查阅资料后,更正为使用cmp操作符实现了正确的字符排序。

901

被折叠的 条评论
为什么被折叠?



