Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic


by root (Scribe)
on Dec 23, 1999 at 00:52 UTC ( #1214=perlfunc: print w/replies, xml ) Need Help??


See the current Perl documentation for I18N::Collate.

Here is our local, out-dated (pre-5.6) version:

I18N::Collate - compare 8-bit scalar data according to the current locale


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

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

This module provides you with objects that will collate according to your national character set, provided that the POSIX setlocale() function is supported on your system.

You can compare $s1 and $s2 above with

    $s1 le $s2

to extract the data itself, you'll need a dereference: $$s1

This module uses POSIX::setlocale(). The basic collation conversion is done by strxfrm() which terminates at NUL characters being a decent C routine. collate_xfrm() handles embedded NUL characters gracefully.

The available locales depend on your operating system; try whether locale -a shows them or man pages for ``locale'' or ``nlsinfo'' or the direct approach ls /usr/lib/nls/loc or ls /usr/lib/nls or ls /usr/lib/locale. Not all the locales that your vendor supports are necessarily installed: please consult your operating system's documentation and possibly your local system administration. The locale names are probably something like xx_XX.(ISO)?8859-N or xx_XX.(ISO)?8859N, for example fr_CH.ISO8859-1 is the Swiss (CH) variant of French (fr), ISO Latin (8859) 1 (-1) which is the Western European character set.

Log In?

What's my password?
Create A New User
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (7)
As of 2017-01-22 10:36 GMT
Find Nodes?
    Voting Booth?
    Do you watch meteor showers?

    Results (187 votes). Check out past polls.