in reply to Setting variables inside a hash: newbie question

It sounds more like you want a templating engine. You have the basic "template" of your sentence and then you fill in the specific variables from user input, right? Well you can build a simple templater something like:
s/\$(\w+)/$values{$1}/g
Where $_ contains the template string and %values contain your key-value substitution pairs. Then anything that looks like $foo gets replaced with the value corresponding to that key in %values. Of course this is just a rudimentaty templating "engine" and probably has a few flaws, so you probably want to use a prebuilt module, such as Text::Template or HTML::Template