namazu-ml(avocado)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Q. about mknmz
- From: Rei FURUKAWA <furukawa@xxxxxxxxxxxxxxxx>
- Date: Wed, 25 Feb 1998 20:22:03 +0900
- X-ml-name: namazu
- X-mail-count: 00267
古川です。
>> On Wed, 25 Feb 1998 19:38:58 +0900, Hiroshi Kato <tumibito@xxxxxxxxxxxxxxxxxxx> said:
>> 遅いだけですから、できたら見捨てないで欲しいです。
> お気に悪くされたのなら,ごめんなさいです.
いやいや、まったくそんなことはありませんので。
で、本題ですが、私は大ボケでした。
>> で、ここで新たな疑問が湧くのですが、私のところでは、1.0.3 のころから
>> perl5.003 で運用しているのですが、今回の問題には出会いませんでした。
この「'a' cmp 'あ'」の問題に気付いたときには、SunOS4.1.4 + perl5.003
だったのですが、実際に運用するときには、うちのスーパーユーザが気を効か
せて 5.004_01 にしてくれていました。よって「perl5.003 で運用して」は
間違いでした。
混乱させてしまったら、申し訳ありませんでした。
> ある疑いが頭をかすめたので,ちょっと実験をしてみました.
詳しい調査をありがとうございます。勉強になります。
> OS bcmp の返却値 memcmp の返却値
> -----------------------------------------------
> SunOS4 1 189
> HP-UX10.01 -67 -67
> FreeBSD 2.1.5 1 -67
> Solaris2.4 1 -67
> どうやら,仮説どおり OS によって,bcmp(),memcmp() の仕様が異なるようです.
perl のソースは見ていないので、よく分かりませんが、SunOS4.1.4 の場合、
bcmp(3) のマニュアルを見ると、
bcmp() は b1 と b2 の 2 つのバイト・ストリングを比較して、内
容 が同一なら 0(ゼロ)を、同一でなければ 0 以外の値を返しま
す。両ストリングの長さは length で示したバイト数であるとみな
されます。長さとして 0 を指定すると、bcmp() は比較の結果とし
て 0 を返します。
と書いてあります。これには、「一致しなければ 0 以外」と書いてあるだけ
で、符号には全く言及されていません。ということは、cmp 演算には bcmp は
使えない、ということでしょうか。
とすると、残るは memcmp(3) ですが、これのマニュアルを見ると、
memcmp() は、単純な文字比較を使用しており、符号の有無は、 マ
シ ンによります。したがって、いずれか 1 つの文字の上位ビット
が ON のとき返る値の符号は、インプリメンテーションに依存しま
す。
とあります。
もし cmp 演算に memcmp を使っていれば、OS (マシン) によって結果が違う、
という現象に説明がつく、と考えてもよいのでしょうか? > 識者のかた
と、メールを書いていたら、たった今、高林さんからのメールが来ました。
>> On Wed, 25 Feb 1998 20:15:25 +0900, Satoru Takabayashi <ccsatoru@xxxxxxxxxxxxxxxxxx> said:
> ちょっと考えてみたのですが、この問題が発生するのはおそらく
お気を遣わせてしまい、本当に申し訳ありません。間違いでした。
> まさか浜松に住んでいらっしゃったとは :-)。
会社が会社ですから…
--
ヤマハ(株)ピアノプレーヤ設計課
古川 令
furukawa@xxxxxxxxxxxxxxxx