user1134991
user1134991

Reputation: 3103

convert a string to a nested tcl list

See the code below:

> foreach a {k l { jo k } {jo i } k } { puts $a}
k
l
jo k
jo i
k

The question is, what happens if I get a string which has a string representation of the list:

> foreach a "{k l { jo k } {jo i } k }" { puts $a}
k l { jo k } {jo i } k

How can I convert the string "{k l { jo k } {jo i } k }" to a list which is identical to: {k l { jo k } {jo i } k }
Using subst and eval, but that did not work.
Thanks.

Upvotes: 0

Views: 57

Answers (2)

glenn jackman
glenn jackman

Reputation: 246807

The "splat" operator works too:

% foreach a "{k l { jo k } {jo i } k }" { puts $a}
k l { jo k } {jo i } k 
% foreach a {*}"{k l { jo k } {jo i } k }" { puts $a}
k
l
 jo k 
jo i 
k

Upvotes: 3

Donal Fellows
Donal Fellows

Reputation: 137567

That string looks like it is holding a list, so let's try lindex

% foreach a [lindex "{k l { jo k } {jo i } k }" 0] { puts $a}
k
l
 jo k 
jo i 
k

Upvotes: 2

Related Questions