まつもと ゆきひろです

In message "[ruby-list:6672] hd.rb"
    on 98/02/24, WATANABE Tetsuya <tetsu / jpn.hp.com> writes:

|「ゲット」できるか? 第二段です。
|
|気がつくところがあればどしどし指摘してください。よろしくお
|願いします。

些細なことですが,perlと違ってrubyでは正規表現はオブジェクト
なので,

|if lang_in == 'sjis'
|  $kanji_re = '^[\201-\237\340-\374][\100-\176\200-\374]$'
|elsif lang_in == 'euc'
|  $kanji_re = '^[\241-\376]{2}$'
|end

|      next if b[i] =~ /#$kanji_re/o

のようなことをせず,

|if lang_in == 'sjis'
|  $kanji_re = /^[\201-\237\340-\374][\100-\176\200-\374]$/
|elsif lang_in == 'euc'
|  $kanji_re = /^[\241-\376]{2}$/
|end

|      next if b[i] =~ $kanji_re

とするのはどうでしょう? さらに

|      next if $kanji_re =~ b[i]

と正規表現を前に置くのがruby流と言われています.
さらにさらに

|  $kanji_re = /^[\201-\237\340-\374][\100-\176\200-\374]$/n

として日本語マッチをオフにした方が若干効率が良いでしょう(末
尾のnに注目).また全角モードでリテラル指定する部分は私が書い
たので,バグがあるかも ^^;;;

                                まつもと ゆきひろ /:|)