前田です。

In message "[ruby-list:6851] again hd.rb"
WATANABE Tetsuya <tetsu / jpn.hp.com> wrote:

|課題としては、「bin_to_str」を汎用的にする(イニシャラ
|イズの点など <- グローバル変数を使用している)というも
|のがあるのですが... (再利用するかな?)

グローバル変数はクラス変数の代わりとして使われている
のでしょうか?
Rubyだとクラス変数がないので、クラス定数にコンテナ
(ArrayやHash)を代入して、クラス変数の代用にすることが
多いです。
# その前にbin_to_strはStringのメソッドにすべきか、という
# 疑問があるのですが...。

|    bin = $_.unpack('C*')
|
|    bin.each_index { |i|
|      bin[i] = sprintf('%2.2x', bin[i])
|    }

これは

bin = []
$_.each_byte { |c|
  bin.push(format("%2.2x", c))
}

の方がよいかもしれません。

あるいは

String.alias_method(:each, :each_byte)

としておいて、

bin = $_.collect { |c| format("%2.2x", c) }

という手もありますね。

|    for i in bin.length .. 16 - 1
|      bin.push('  ')
|    end

(16 - bin.length).times { bin.push('  ') }

や

bin += ['  '] * (16 - bin.length)

と書けます。

|      Kconv.kconv($1, Kconv::JIS, $in_kanji_code)

これは

|include Kconv

としているなら

kconv($1, Kconv::JIS, $in_kanji_code)

とするだけでよいです。
あるいはKconv.kconv(...)という呼び方をするならincludeする
必要はないとも言えます。

あとデフォルトのコードは$KCODEの値を見るようにすると
よいかもしれません。
1.1b8からはkconvに$KCODEをそのまま渡せます。

-- 
前田 修吾