TCL "join" command not merging list into single string

With the "join" command I've assumed tcl would merge a list of elements into a single string with delimiter.

However this is not what I see at my terminal. Also, without a delimiter it returns the same list of elements with a space in between although ideally it should merge them with no spaces

Example:

## Setting original string set A [list 1 2 3] % 1 2 3 puts [llength $A] % 3 ## Join list without delimiter set B [join $A] % 1 2 3 puts [llength $B] % 3 ## Join list with space delimiter (actual requirement) set C [join $A " "] % 1 2 3 puts [llength $C] % 3 ## Join list with comma delimiter (to also visibly check what happens to each element of list) set D [join $A ","] % 1, 2, 3 puts [llength $D] % 3 foreach item $D {puts $item} 1, 2, 3 

Not sure what is going wrong here. I am trying to set a variable as a single string "1 2 3"

Trying to merge all elements of a list into single string. However "join" returns the same list as initial but with delimiter added to each element of list (except last).

EDIT: On my new machine, the [join $A ","] is working correctly as 1,2,3 without spaces.

8

1 Answer

The highly unlikely bit is this:

set A [list 1 2 3] # ==> 1 2 3 set D [join $A ","] # ==> 1, 2, 3 

as when I put that into a fresh Tcl session I instead get a final output of 1,2,3 (and that's not behaviour anyone's planning to change). I'm guessing you have a stray space in there or have defined a custom version of join.

4

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like