内容

名称

I18N::Collate - 根据当前区域设置比较 8 位标量数据

概要

use I18N::Collate;
setlocale(LC_COLLATE, 'locale-of-your-choice');
$s1 = I18N::Collate->new("scalar_data_1");
$s2 = I18N::Collate->new("scalar_data_2");

描述

  ***

  WARNING: starting from the Perl version 5.003_06
  the I18N::Collate interface for comparing 8-bit scalar data
  according to the current locale

	HAS BEEN DEPRECATED

  That is, please do not use it anymore for any new applications
  and please migrate the old applications away from it because its
  functionality was integrated into the Perl core language in the
  release 5.003_06.

  See the perllocale manual page for further information.

  ***

此模块为您提供对象,这些对象将根据您的国家字符集进行排序,前提是您的系统支持 POSIX setlocale() 函数。

您可以使用以下方法比较上面的 $s1 和 $s2

$s1 le $s2

要提取数据本身,您需要解引用:$$s1

此模块使用 POSIX::setlocale()。基本的排序转换由 strxfrm() 完成,它在 NUL 字符处终止,这是一个不错的 C 例程。collate_xfrm() 可以优雅地处理嵌入的 NUL 字符。

可用的区域设置取决于您的操作系统;尝试一下 locale -a 是否显示它们,或者查看“locale”或“nlsinfo”的手册页,或者直接使用 ls /usr/lib/nls/locls /usr/lib/nlsls /usr/lib/locale。并非您的供应商支持的所有区域设置都已安装:请查阅您的操作系统的文档,并可能咨询您当地的系统管理员。区域设置名称可能是 xx_XX.(ISO)?8859-Nxx_XX.(ISO)?8859N,例如 fr_CH.ISO8859-1 是法语 (fr) 的瑞士 (CH) 变体,ISO 拉丁语 (8859) 1 (-1) 是西欧字符集。