There are recurring questions on the Tcl list about "Which book should I buy?" (or even Where can I find a book about Tcl?) There are several great books, and I wanted to evaluate them for the new Tcl person. Everything here is my personal opinion, unless someone else edits it. :)
Of course, though it's not a book, Clif Flynt wrote "Tcl Tutor", a freely downloadable tutorial on Tcl. This should be your first step.
Another "not a book" that is really useful, though more useful for "Real Programmers" than whatever the alternative designation is, are the Tcl and Tk man pages, which are excellent and much more immediately helpful than most man pages!
I use two books most of the time. When I need a memory jogger it's Clif's "BOOK Tcl/Tk for Real Programmers". I always wanted to be a real programmer. However, there are times when it is too terse for my needs, or is just plain over my head.
For those times, and to go back to my favorite, John Ousterhout's "Book Tcl and the Tk Toolkit". I love this one because it breaks each topic into very small portions, and you can read a chapter in a few minutes and start on that topic immediately. Although it is for on older version of Tcl/Tk, I use this one most often.
My experience with other books includes:
Book Exploring Expect, Don Libes. Great book, great topic. It even has a started chapter on Tcl if you need it. Expect is a great tool that I'm just figuring out how to use, and the more I use it the more I appreciate this book. 22 Nov 01 After having been immersed in the spartan world of /bin/sh for a long while, I'm back to playing with Tcl and expect. Expect is solving some serious production issues for us, and making enterprise management a *lot* easier. So far the reactions have ranged from wide-eyed appreciation to exclamations of "Cool!"
Brent Welch, Book Practical Programming in Tcl and Tk. (2nd ed.) A great book; more current than the O. book and less for real programmers than Clif's. However, I got this after the other two and it does not fill a gap they don't. It does give another perspective on a topic, and if you were just able to buy one book, the 3rd edition might be a good way to get a more current view of Tcl with a deeper introduction. Interestingly enough, while working on another issue in another window, I needed this one to help me understand the "foreach" command.
Book Effective Tcl - Writing Better Programs in Tcl and Tk by Mark Harrison and Michael McLennan is another good book that I don't use enough. I think it will be good later, right now it's a little over my head. Note that this book requires the use of an external library that is not part of the Tcl core, but is freely available.
The _external library_ is only required to play with the examples in the book. Foremost, this is a book, not a software package. Read it to take you to the next level of Tcl programming
LH 24 Nov 01 After someone wrote the above, I re-read my notes and they did seem to be a bit negative. The best way I can explain this book is to say I can't wait to get more into it. The authors use non-trivial programming examples to show the whole idea of a Tcl based application, and understanding of this material should, indeed, take the reader to a higher level of Tcl/Tk coding expertise.
Book CGI Programming with Tcl, by David Maggiano is good tool for web pages. I've used it some, and had no problems with the level of material. It even has an introduction to the whole cgi/web concept, for those who are new to it.
LV Some people have mentioned finding the WinHelp version of the man pages very useful because of the one file that is searchable nature. In theory, one could create a Tcl based interface in a scripted document that could then be used across platform - I know that JCW has done some work along those lines with other documents - incrfilter is one of the early projects that he, Alexandre Ferrieux, and I worked on (a Tk app that does full text searching of a large document, displaying hits). Perhaps someone would be interested in adapting the incrfilter technology to the documentation scripted doc?