String map expect a list as argument...
you can create a list with following format:
>set variable = "xxxx"
# curly brackets doesn’t support variables
set newpoolname [string map -nocase {"-app" $variable} $defaultpool]
# list command between brackets with even parameter numbers is the best solution
set newpoolname [string map -nocase [list "-app" $variable] $defaultpool]
# create a string with space... it will be converted to a list with space as separator (less efficient than list and curly brackets)
set newpoolname [string map -nocase "-app $variable" $defaultpool]