稲葉です。

ruby-listの「count lines」のスレッドを読んでいて、Perlならスカラコンテ
クストのtrでいいのに、と思いました。

tr///dはString#delete、tr///sはString#tr_sとメソッドを用意しているのだ
から、String#countというある範囲の文字の数を数えるメソッドがあってもい
いと思いますが、どうでしょうか?

ついでに、Perlのtrでは直接できるのにrubyでは工夫しないとできないことを
2つあげます。

1.rubyのString#trは\0への置換ができません。Perlのtrはできます。
  % ruby -e 'p "a0b1c2".tr("0-2", "\0-\2")'
  "a0b\001c\002"

2.rubyのString#deleteはPerlのtr///dでできる「ある範囲に含まれある
範囲に含まれない」文字の削除ができません。
  % perl -le '$_ = "123456789"; tr/2-8/4-6/d; print'
  14569
--
			稲葉 浩人  <inaba / st.rim.or.jp>