dupとかclone

  • Cのソースファイルからあるキーワードが含まれた行を表示
  • コメント文にそのキーワードがあっても無視
  • /* */で囲まれたコメントはごめんなさい

そんなプログラムをrubyでつくるとしたら例えばこんな感じのかな

while line = gets
  $_.chomp!
  $_.sub(/\/\/.*/.'')
  if /keyword/ =~ $_
    puts $_
  end
end

でも,これだと//以降を切ってしまったので元々の行が表示できない!

ということでwhile文の直後にどこかにコピーしておけばいいんだけど,単純な=だと参照コピーなんだよなぁ。。。

ということで出番なのがdupとか。

こいつを使えばsubとかchompする前のデータをコピーしておける。

ということでこんな感じに

while line = gets
 show_str = $_.dup
  $_.chomp!
  $_.sub(/\/\/.*/.'')
  if /keyword/ =~ $_
    puts show_str
  end
end