わたなべです.

Yukihiro Matsumoto <matz / netlab.co.jp> writes:

:String#sumがあると思います.

そういう名前だったんだ. 気づかなかった :-)

:…って思ったらPerlと値が違うぞ.バグか. ^^;;;

manual 見てこんなの作ってみたけど, perl のほうがなんか変ですね.

% cat >sum.rb
$/ = nil
sum = 0
while gets
  sum += $_.sum
end
sum %= 65536
puts sum
% cat >sum.pl
while (<>) {
    $checksum += unpack("%16C*", $_);
}
$checksum %= 65536;
print $checksum, "\n";
% sum -s /vmlinuz
50805 731 /vmlinuz
% ruby sum.rb /vmlinuz
50805
% perl sum.pl /vmlinuz
50084

ruby は $/ を nil にしないと変でした. ちらっと string.c を見
ると, 余りを求めてるけど & だよね. それと最後に一回だけする
ようにしてみました.

-- 
わたなべひろふみ

--- string.c.orig Thu Feb 5 18:20:30 1998 +++ string.c Mon Feb 9 15:19:24 1998 @@ -2252,5 +2252,5 @@ res = rb_funcall(res, '+', 1, INT2FIX((UINT)*p)); - res = rb_funcall(res, '%', 1, mod); p++; } + res = rb_funcall(res, '&', 1, mod); return res; @@ -2263,5 +2263,5 @@ res += (UINT)*p; - res %= mod; p++; } + res &= mod; return int2inum(res);