Если вы хотите заменить все вхождения символа, string map
очень подходит:
# Careful with the quoting here
set obj [string map [list {[} {\[}] $obj]
Если вы хотите просто заменить первое вхождение, regsub
- лучший инструмент
set obj [regsub {\[} $obj {\\&}]
(&
становится согласованной строкой, и мы должны быть осторожны с обратной косой чертой как в RE, так и в тексте замещения.)