Это не будет работать для локальных переменных из-за того, как они управляются.Code.eval_string/3
явно принимает привязку в качестве второго параметра, поэтому вы можете:
Code.eval_string(Atom.to_string(:old) <> "_var", old_var: "foo")
Sidenote: Code.eval_string/3
не следует использовать в коде клиента, если толькоты прекрасно понимаешь, почему ты это делаешь (и даже тогда этого следует избегать.)