use I18N::Collate; setlocale(LC_COLLATE, $locale); # uses POSIX::setlocale $s1 = new I18N::Collate "
scalar_data_1"; $s2 = new I18N::Collate "
This module provides you with objects that can be collated (ordered)
according to your national character set, provided that Perl's POSIX
module and the POSIX setlocale(3) and strxfrm(3) functions are
available on your system.
$locale in the
invocation shown above must be an argument acceptable to
setlocale(3) on your system. See the setlocale(3) manpage
for further information. Available locales depend upon your operating
Here is an example of collation within the standard `C' locale:
use I18N::Collate; setlocale(LC_COLLATE, 'C'); $s1 = new I18N::Collate "Hello"; $s2 = new I18N::Collate "Goodbye"; # following line prints "Hello comes before Goodbye" print "$$s1 comes before $$s2" if $s2 le $s1;
The objects returned by the
new() method are references. You can
get at their values by dereferencing them - for example,
$$s2. However, Perl's built-in comparison operators are
overloaded by I18N::Collate, so that they operate on the objects returned
new() without the necessity of dereference. The print line
to access their values
directly, but does not dereference the variables passed to the le
operator. The comparison operators you can use in this way are the
< <= > >= == != <=> lt le gt ge eq ne cmp
to perform the collation. Unlike
I18N::Collate handles embedded
NULL characters gracefully.
To determine which locales are available with your operating system, check whether the command:
lists them. You can also check the locale(5) or nlsinfo manpages, or look at the filenames within one of these directories (or their subdirectories): /usr/lib/nls, /usr/share/lib/locale, or /etc/locale. Not all locales your vendor supports are necessarily installed. Please consult your operating system's documentation and possibly your local system administrator.