Ok, folk, time to try again. It's nothing to do with SHA-1. I deleted the SHA-1 update from the code so it's the same as "cat file >/dev/null", and it takes *ages*: $ time cat /tmp/ten_megabytes >/dev/null real 0m0.040s user 0m0.000s sys 0m0.040s $ time ruby cat.rb /tmp/ten_megabytes real 0m1.262s user 0m1.230s sys 0m0.030s $ time ruby sha1.rb /tmp/ten_megabytes 8c206a1a87599f532ce68675536f0b1546900d7a /tmp/ten_megabytes real 0m1.693s user 0m1.600s sys 0m0.090s $ time perl cat.pl < /tmp/ten_megabytes >/dev/null real 0m0.044s user 0m0.010s sys 0m0.030s I gotta say folk, this is going to make it *very* hard to convince others here to use ruby, and that's a shame... *30* times slower than Perl?!! Code available on request. Clifford Heath