namazu-ml(avocado)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Q. about mknmz



古川@浜松在住です。

>> On Tue, 24 Feb 1998 12:27:29 +0900, Hiroshi Kato <tumibito@xxxxxxxxxxxxxxxxxxx> said:
  > <コメント>
  > 1640 行付近の
  > 		if ($current_word eq $words[$cnt]) {
  > も unsignedcmp しないといけないかな?とも思ったのですが,eq 演算子はちゃ
  > んと機能するようですねぇ...
  > </コメント>

この問題は、例えば

    'a' cmp 'あ'

という演算が何を返すか、ということに関わるのですが、件の perl では、
cmp 演算のときに、'あ' の文字コードとして、0xa4 ではなくて、-0x5c と
扱われるようです。(つまり signed char)

そこで、その場合に unsignedcmp を用いて、同じ結果が得られるようにして
います。

# ただし、現在の unsignedcmp は、
#       ord('あ') で、-0x5c ではなくて、0xa4 が返ってくる
# という、私のところの perl での「実験結果」に依存しています。

で、signed であろうと unsigned であろうと、「等しいかどうか」の判定に
は関係ないので、eq はちゃんと動く、ということです。

(以上、推測も混じっています)


  > patch を作った後でいうのも変ですが,マニュアルの「動作に必要なソフトウェ
  > ア」を Perl5.004 にしてしまったら如何? (^_^;;;;

遅いだけですから、できたら見捨てないで欲しいです。


で、ここで新たな疑問が湧くのですが、私のところでは、1.0.3 のころから
perl5.003 で運用しているのですが、今回の問題には出会いませんでした。

なにか、他にも条件があるのでしょうか?それとも、たんに気付かなかった
だけでしょうか?

-- 

                                        ヤマハ(株)ピアノプレーヤ設計課
                                                              古川 令
                                             furukawa@xxxxxxxxxxxxxxxx