split and join in tcl and expect
Archive - Originally posted on "The Horse's Mouth" - 2009-10-23 07:51:46 - Graham EllisSplit and join in most languages convert strings of text into arrays / lists / collections of other sorts. But in Tcl, all variables are held as strings, so are split and join actually needed?
If you're working with a collection of single words - no embedded spaces, no special characters, space delimited, then running split and join in Tcl will return you a string that's identical to the one you sent to them ... but if you do have special characters involved, it's another matter:
Dorothy-2:tcl grahamellis$ tclsh
% set places [list Calne Devizes Melksham Corsham Bradford-on-Avon]
Calne Devizes Melksham Corsham Bradford-on-Avon
% join $places
Calne Devizes Melksham Corsham Bradford-on-Avon
% split [join $places]
Calne Devizes Melksham Corsham Bradford-on-Avon
% Dorothy-2:tcl grahamellis$
but
Dorothy-2:tcl grahamellis$ tclsh
% set places [list "404, The Spa" {"Well House Manor"} Bristol]
{404, The Spa} {"Well House Manor"} Bristol
% join $places
404, The Spa "Well House Manor" Bristol
% split [join $places]
404, The Spa {"Well} House Manor\" Bristol
% Dorothy-2:tcl grahamellis$
Because they're so often 'null' in their effect, you should test any code that uses lists very carefully, and with special characters too when you're working in Tcl.
I've added an example from this week's Tcl course here, and there are further string manipulation examples here and here. A further example here shows a case of handling a string as a list where you don't need to use split or join.