稲葉です。
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>