in reply to Editting Part of Regex

You're on the right track... You can copy $1 to another variable in order to do the substitution. Also, you'll need to use different delimiters for the nested substitutions.
$string =~ s{<tag>(.*?)</tag>} {(my $x = $1) =~ s/\n/<br>/g; "<tag>$x</tag>"}gise;
By using something other than / as a delimiter for the outer substitution, I avoided having to backslash the literal /s.