It's not clear to me if send_user
is the same as puts
. Every time I want to send an informative message to the user, I would wonder which one I should use. From Expect's man page, it seems like send_user
is the same as puts
but then what is send_user
used for?

- 19,215
- 5
- 38
- 56
-
They _might_ be the same; Expect predates a lot of Tcl's own IO handling… – Donal Fellows Dec 11 '12 at 15:50
2 Answers
Another difference I just discovered between the two, apart from the newline thing, is that if you're using log_file
in your Expect script, statements sent via send_user
will make it into the logfile, whereas statements sent with puts
do not. If you're automating some Expect scripts which aren't being run on your actual console, that can make a big difference.

- 166
- 3
The main difference is that puts
automatically appends a newline and
send_user
does not. In this regard, puts -nonewline
is more analagous
to send_user
.
send_user
also "inherits" some options from expect's send
, such as -s
and -h
(check the expect man page for details). See
http://99-bottles-of-beer.net/language-expect-249.html
for a usage of the -h
flag.
I cannot speak to how they're implemented at the C-level.

- 238,783
- 38
- 220
- 352