in reply to Re: substitution not working correctly
in thread substitution not working correctly

If you're going to use a non-greedy match, you might as well get rid of the character class.
$string =~ s/##\s*(.*?)\s*##/##$langhash{$1}##/s