NAME
       puts - Write to a channel

SYNOPSIS
       puts ?-nonewline? ?channelId? string


DESCRIPTION
       Writes the characters given by string to the channel given
       by channelId.  ChannelId must be a channel identifier such
       as  returned from a previous invocation of open or socket.
       It must have been opened for output. If  no  channelId  is
       specified  then  it defaults to stdout. Puts normally out-
       puts a newline character after string,  but  this  feature
       may be suppressed by specifying the -nonewline switch.

       Newline characters in the output are translated by puts to
       platform-specific end-of-line sequences according  to  the
       current  value  of the -translation option for the channel
       (for example, on PCs newlines are normally  replaced  with
       carriage-return-linefeed  sequences;   on Macintoshes new-
       lines are normally replaced with  carriage-returns).   See
       the  fconfigure  manual  entry for a discussion on ways in
       which fconfigure will alter output.

       Tcl buffers output internally, so characters written  with
       puts  may  not  appear  immediately  on the output file or
       device;  Tcl will normally delay output until  the  buffer
       is full or the channel is closed.  You can force output to
       appear immediately with the flush command.

       When the output buffer fills up,  the  puts  command  will
       normally  block  until  all  the  buffered  data  has been
       accepted for output by the operating system.  If channelId
       is  in  nonblocking  mode  then  the puts command will not
       block even if the operating system cannot accept the data.
       Instead, Tcl continues to buffer the data and writes it in
       the background as fast as the underlying  file  or  device
       can  accept  it.   The  application must use the Tcl event
       loop for nonblocking output to work;  otherwise Tcl  never
       finds out that the file or device is ready for more output
       data.  It is possible for an arbitrarily large  amount  of
       data  to  be  buffered  for a channel in nonblocking mode,
       which could consume a large amount of  memory.   To  avoid
       wasting memory, nonblocking I/O should normally be used in
       an event-driven fashion with the fileevent command  (don't
       invoke  puts  unless you have recently been notified via a
       file event that the  channel  is  ready  for  more  output
       data).


SEE ALSO
       fileevent(n)
KEYWORDS
       channel, newline, output, write
