作者: INABA HITOSHI
日時: 2010/2/16(01:04)
稲葉です。大分前のメールですが、
http://text.world.coocan.jp/TSNET/?TSperl
にリストアップされていたので...

2008/6/28(18:48) 藤岡和夫さんwrote:

>> あまり複雑なことをしないのなら
>> ・入力は必ず decode する
>> ・文字列操作は必ずフラグ付きの文字に対して行う
>> ・出力は必ず encode する
>> などいくつかの縛りをつけてやればそれほど難しい話でもないと思いますが
>> どんなもんでしょうか。
>
>   なるほど、そうですね。実は、それはスクリプティング言語側の仕事であるべ
> きというのが私の意見ですけどね。入出力の作業が増えたのが気に入らない。も
> ちろん、バイト列として取り扱いたい場合がありうるのかもしれませんが、むし
> ろそちらを例外的な操作としたほうがわかりやすい。
>
> 1. 文字列はUTF-8を使うことが前提。
> 2. 入力時にUTF-8フラグを必ず立てる。
> 3. UTF-8フラグを立てた状態で文字列処理を行う。
> 4. 出力時はUTF-8フラグを降ろす。
>
> このフラグを立てたり、降ろしたりというのが、どうもスマートには思えないん
> ですね。しかし、ないものねだりをしても仕方がないので、フラグを立てたり、
> 降ろしたりに何を使うかを考えました。

「複数の文字列をいろは順にソートしたい」という命題には utf8 フラグも文字列
オブジェクトも登場しないので、導入せずにすむのであればそうしたいものです。

いまでは UTF2 ソフトウェアを利用できます。

C. UTF2 ソフトウェアを使う方法

この方法は外部エンコーディング(=オクテット列)と内部エンコーディング(=文字
列)を同一として扱う方法です。なので utf8 フラグを立てたり(=decode)、降ろし
たり(=encode)する必要はありません。perluniadvice に書かれていることは考慮
不要です。

以下の内容は UTF-8 で保存します。
-----^
use UTF2;
@tbl = split(",","い,ろ,は,に,ほ,へ,と,ち,り,ぬ,る,を,わ,か,よ,た,れ,そ,つ,ね,な,ら,む,う,ゐ,の,お,く,や,ま,け,ふ,こ,え,て,あ,さ,き,ゆ,め,み,し,ゑ,ひ,も,せ,す,ん");
foreach (@tbl){
    $char{$_} = $i++;
}
while(<DATA>){
    chomp;
    @chars = split(//,$_);
    for($j=0;$j<=$#chars;$j++){
        $numstr .= sprintf("%02d", $char{$chars[$j]});
    }
    $words{$numstr} = $_;$numstr = "";
}
foreach $numstr (sort keys %words){
    print "$numstr $words{$numstr}\n";
}
__END__
いぬ
とちのき
にんじん
はむたろう
ろば
へらぶな
とり
ほらがい
-----$

 		 	   		  
_________________________________________________________________
メール一括チェック!他の無料メールもプロバイダーメールも。
http://windows7.jp.msn.com/master/hm-popaggre/default.htm