Dinesh
Dinesh

Reputation: 16428

Using backslash-newline sequence in Tcl

In Tcl, we are using the backslash for escaping special characters as well as for spreading long commands across multiple lines.

For example, a typical if loop can be written as

set some_Variable_here  1
if { $some_Variable_here == 1 } { 
    puts "it is equal to 1"
} else { 
    puts "it is not equal to 1"
}

With the help of backslash, it can be written as follows too

set some_Variable_here  1
if { $some_Variable_here == 1 } \
{ 
    puts "it is equal to 1"
} \
else { 
    puts "it is not equal to 1"
}

So, with backslash we can make the statements to be treated as if like they are in the same line.

Lets consider the set statement

I can write something like as below

set x Albert\ Einstein;# This works
puts $x

#This one is not working
set y Albert\
Einstein

If I try with double quotes or braces, then the above one will work. So, is it possible to escape the newline with backslashes without double quotes or braces?

Upvotes: 1

Views: 16965

Answers (1)

Donal Fellows
Donal Fellows

Reputation: 137567

A backslash-newline-whitespace* sequence (i.e., following whitespace is skipped over) is always replaced with a single space. To get a backslash followed by a newline in the resulting string, use \\ followed by \n instead.

set y Albert\\\nEinstein

Upvotes: 3

Related Questions