わたなべです。

goto / yokogawa-kouji.co.jp <goto / yokogawa-kouji.co.jp> writes:

> capコードをeucコードに変換するコードを考えているのですが、以下のコード
> でXXXXの部分(パターンマッチした値)を保持するシステム変数はありませんで
> しょうか。(あればうれしいのですが)

ここはblockを使わないと実現できません。

>   require "nkf"
>   while line=gets 
>     line.chomp

line.chomp!じゃないと無意味。

>     if line =~ /^:/ then
>       line.gsub!(/:([a-fA-F0-9][a-fA-F0-9])/,XXXX.hex.to_a.pack("c"))

       line.gsub!(/:([a-fA-F0-9][a-fA-F0-9])/) {$1.hex.to_a.pack("c")}

>     end
>     printf("%s",NKF.nkf("-e",line))
>   end

to_aは将来なくなるかもしれないので、
       line.gsub!(/:([a-fA-F0-9][a-fA-F0-9])/) {[$1.hex].pack("c")}
としましょう。もっとも、packじゃなくてchrを使えば、
       line.gsub!(/:([a-fA-F0-9][a-fA-F0-9])/) {$1.hex.chr}
でいいです。

-- 
わたなべひろふみ