Проблема Ruby Gsub при использовании обратных ссылок и хэшей

Следующий код определяет хеш с регулярными выражениями (ключами) и заменами (значениями). Затем он перебирает хеш и соответственно заменяет строку.

Простая подстановка строк работает хорошо, но когда мне нужно вычислить результат перед его заменой (случай лет меняется), это не так. И это ключ к тому, что хеш определен заранее.

Что мне не хватает? Любая помощь будет очень ценится.

a = "After 45 years we cannot use this thing."

hash = {
  /(\d+) years/ => "#{$1.to_f*2}" + ' days',
  /cannot/      => 'of course we CAN'  
}

hash.each {|k,v| 

  a.gsub!(k) { v }
}

puts a

Спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос