排序请教。自定义规则

大家好,事情是这样的:
一文件夹中有很多文件,名字有如下特点:
  1. XX_normal.file
  2. XX_click.file
  3. XX_hover.file
  4. YY_click.file
  5. YY_hover.file
  6. YY_normal.file
  7. ZZ_click.file
  8. ZZ_hover.file
  9. ZZ_normal.file
复制代码
要求按normal,hover,click这样的顺序输出,即:
  1. XX_normal.file,XX_hover.file,XX_click.file
  2. YY_normal.file,YY_hover.file,YY_click.file
  3. ZZ_normal.file,ZZ_hover.file,ZZ_click.file
复制代码
小骆驼排序那里看了又看,说cmp返回三个参数,看得云里雾里的。实在是还未能看懂。特求指教。

作者: perlnewbie   发布时间: 2011-05-31

有序数据集的基本特征是 任意两个元素 a b 比较必然属于以下三种关系 a < b, a = b, a > b。存在一个比较函数来指明这三种情况。
两个字符串 a b 通过函数 cmp 比较, 如果 a < b 那么返回 -1  a = b 返回 0 a > b 返回 1

对于你的数据集你只需要定义你自己的比较规则,然后要求 sort 用你这个规则比较就可以了。Perl 约定这个函数返回 -1 表示 a < b 返回 0 表示 a=b 返回 1 表示 a > b

作者: zhlong8   发布时间: 2011-05-31