概要

  • Unicode 順でのソート。
  • ひらがな/カタカナを区別せずにソートするには「Unicode::Collate」でソートする。

ソース

  • sortUnicode.zip
    #!/usr/bin/perl
    # Unicode 順のソート
    
    use strict;
    use warnings;
    use utf8;
    use Encode;
    use POSIX qw(locale_h);
    use locale;
    use Unicode::Collate;
    
    my $charsetConsole = 'UTF-8';
    
    binmode( STDIN,  ":encoding($charsetConsole)" );
    binmode( STDOUT, ":encoding($charsetConsole)" );
    binmode( STDERR, ":encoding($charsetConsole)" );
    
    my @list = split( //, 'あぁAAアアaはばぱがかぴひび' );
    
    my $locale = "ja_JP.UTF-8";
    setlocale( LC_ALL, $locale );
    print "locale($locale)\n";
    print join( "", sort(@list) ) . "\n";
    print "\n";
    my $Collator = Unicode::Collate->new();
    print "Unicode::Collate\n";
    print join( "", $Collator->sort(@list) ) . "\n";

出力

  • Cent OS 6, perl v5.10.1
    locale(ja_JP.UTF-8)
    AaアAぁあかがはばぱひびぴア
    
    Unicode::Collate
    aAAぁあアアかがはばぱひびぴ

リンク