File I/O

Once a file is open, you can read from it and write to it.

Use the puts command to write to a file. If you provide a file identifier, puts will write to that file.

set file [open /tmp/stuff w]
puts $file "Hello World"       ;# write to /tmp/stuff

Remember that puts writes to the standard output by default. Sometimes it is convenient to refer to the standard output explicitly. You can do that using the predefined file identifier stdout. (You can also refer to the standard input as stdin and the standard error as stderr.)

The puts command also accepts the argument -nonewline, which skips adding a newline to the end of the line.

puts -nonewline $file "Hello World"

If you are writing strings without newlines to a character special file (such as a terminal), the output will not immediately appear because the I/O system buffers output one line at a time. However, there are strings you want to appear immediately and without a newline. Prompts are good examples. To force them out, use the flush command.

puts -nonewline $file $prompt
flush $file

Use the gets command or read command to read from a file. gets reads a line at a time and is good for text files in simple applications. read is appropriate for everything else.

The gets command takes a file identifier and an optional variable name in which to store the string that was read. When used this way, the length of the string is returned. If the end of the file is reached, −1 is returned.

I frequently read through files with the following code. ...

Get Exploring Expect now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.