There's not much difference between lists and strings in Tcl. In fact a list is just a string in a particular format, and if you
split a string that contains just letters and spaces into a "list" you may not change anything AT ALL. Which means that if you make a coding error you may not spot it until some of the characters which form a part of the list syntax to handle specials are used within the string.
Here's a listish setup:
set john {{tom simon ann sophie cindy}}
But when I split that and iterate through the elements,I don't get what I want - strange things happen with the inner { and }. Code:
set mitems [split $john]
foreach thing $mitems {
puts $thing
}
When I run that, the results I get are:
{tom
simon
ann
sophie
cindy}
As my handling of the list of lists wasn't correct .... what would have been better is to have written
foreach thing $john {
foreach name $thing {
puts $name
}
}
which would give
tom
simon
ann
sophie
cindy
For Perl, Python, Ruby and PHP programmers, who are used to split doing a considerable amount of work, the small step taken by Tcl's split comes as a bit of a surprise, and even people who've been writingTcl for a while can end up scratching their head at extra curly braces which they hadn't expected from code like that above.
I'm teaching Tcl in a couple of weeks ... starting on Tuesday 30th August for delegates new to programming, and the following day for delegates with prior experience of another language - see
[here] for a description of that course.
(written 2011-08-16)
Associated topics are indexed under
T206 - Tcl/Tk - Lists [3618] lists and struct::list in Tcl - Introduction to struct::list and examples - (2012-02-18)
[3583] Expanding a list of parameters in Tcl - {*} and eval - (2012-01-17)
[3582] Tcl collections - lists, dicts and array - (2012-01-16)
[3415] User defined sorting and other uses of callbacks in Tcl and Tk - (2011-09-02)
[3285] Extracting data from a string / line from file - Tcl - (2011-05-10)
[2472] split and join in tcl and expect - (2009-10-23)
[2468] What are Tcl lists? - (2009-10-22)
[1601] Replacing the last comma with an and - (2008-04-04)
[1405] Sorting in Tcl - lists and arrays - (2007-10-24)
[1402] Tcl - append v lappend v concat - (2007-10-23)
[1334] Stable sorting - Tcl, Perl and others - (2007-09-06)
[1283] Generating traffic for network testing - (2007-07-29)
[1282] Stringing together Tcl scripts - (2007-07-29)
[781] Tcl - lappend v concat - (2006-06-27)
[463] Splitting the difference - (2005-10-13)
[144] Tcl sandwich - lists in Tcl - (2004-12-08)
Some other Articles
Perl - making best use of the flexibility, but also using good coding standardsDoes a for loop evaluate its end condition once, or on every iteration?Tables as Objects in Lua - a gentle introduction to data driven programmingParallel but not really parallel. Moving game characters. Coroutines in Lua. The difference between lists and strings - TclRodwell Trail, WeymouthWhat costs 8.20 from Melksham, or 22.30 via Chippenham?For programmers who use Internet Explorer as their browserPrinting objects in C++Plenty to do in Melksham