В ответ на ваш первый вопрос. Да, вы можете делать математику в документе «ЗДЕСЬ». Вы бы просто использовали стандартную оценку выражения # {}.
<<EOF
This is a
multiline doc
with some math in it.
#{3 *18}
EOF
В ответ на ваш второй вопрос; вы не можете выполнить интерполяцию строк так, как вы показываете в своем примере в документе DRE. Рассмотрим способ его оценки. Он рассматривается скорее как поток, который мгновенно оценивается, когда документ завершен.
Обычно я просто создавал ваши другие переменные перед документом ЗДЕСЬ, а затем использовал стандартную оценку выражения в вашем документе DRE.
Если вы хотите отформатировать свои строки непосредственно в документе «ЗДЕСЬ», это нужно в начале, как указал @sawa. Обратите внимание на следующий пример, как я передаю несколько строк в массиве.
<<EOF % ['string','string2','string3']
%s
%s
%s
HERE
Если вы хотите систему шаблонов, возможно, вам стоит рассмотреть Erb. –