When you're programming, you shouldn't write code to read directly from the keyboard and write to the screen .... what if you want to have your program read from or write to a file sometimes? Instead, you should write code to read from stdin (Tcl) or STDIN (Perl) and write to stdout (Tcl) or STDOUT (Perl). Then you can re-direct from and to file!
But wait .... if you redirect ALL your output to a file, including error messages, you'll find it pretty irritating having to look in a file to see if the program worked. Better to use the alternative stderr (Tcl) or STDERR (Perl) output channel for warnings, errors, and status reports.
Here's a Tcl example of code written that way:
puts -nonewline stderr "Who are you? "
flush stderr
set yername [gets stdin]
puts "Hello $yername and welcome"
puts stderr "Job Completed"
And here's an example of that program running:
arth-wind-and-fire:~/dec07 grahamellis$ tclsh tt
Who are you? Graham
Hello Graham and welcome
Job Completed
earth-wind-and-fire:~/dec07 grahamellis$ tclsh tt > xx.txt
Who are you? Graham
Job Completed
earth-wind-and-fire:~/dec07 grahamellis$ cat xx.txt
Hello Graham and welcome
earth-wind-and-fire:~/dec07 grahamellis$ (written 2007-12-10, updated 2007-12-12)
Associated topics are indexed under
P207 - Perl - File Handling [3548] Dark mornings, dog update, and Python and Lua courses before Christmas - (2011-12-10)
[3326] Finding your big files in Perl - design considerations beyond the course environment - (2011-06-14)
[2833] Fresh Perl Teaching Examples - part 2 of 3 - (2010-06-27)
[2821] Chancellor George Osborne inspires Perl Program - (2010-06-22)
[2818] File open and read in Perl - modernisation - (2010-06-19)
[2405] But I am reading from a file - no need to prompt (Perl) - (2009-09-14)
[2233] Transforming data in Perl using lists of lists and hashes of hashes - (2009-06-12)
[1861] Reactive (dynamic) formatting in Perl - (2008-10-31)
[1860] Seven new intermediate Perl examples - (2008-10-30)
[1841] Formatting with a leading + / Lua and Perl - (2008-10-15)
[1709] There is more that one way - Perl - (2008-07-14)
[1442] Reading a file multiple times - file pointers - (2007-11-23)
[1416] Good, steady, simple example - Perl file handling - (2007-10-30)
[1312] Some one line Perl tips and techniques - (2007-08-21)
[867] Being sure to be positive in Perl - (2006-09-15)
[702] Iterators - expressions tha change each time you call them - (2006-04-27)
[618] Perl - its up to YOU to check your file opened - (2006-02-23)
[616] printf - a flawed but useful function - (2006-02-22)
[255] STDIN, STDOUT, STDERR and DATA - Perl file handles - (2005-03-23)
[114] Relative or absolute milkman - (2004-11-10)
[12] How many people in a room? - (2004-08-12)
T209 - Tcl/Tk - File and Directory Handling [3429] Searching through all the files in or below a directory - Ruby, Tcl, Perl - (2011-09-09)
[3320] Reading the nth line from a file (Perl and Tcl examples) - (2011-06-09)
[3192] Tcl - Some example of HOW TO in handling data files and formats - (2011-03-04)
[2467] Tcl - catching an error before your program crashes - (2009-10-22)
[1426] Buffering up in Tcl - the empty coke can comparison - (2007-11-10)
[1407] Reading from another process in Tcl (pipes and sockets) - (2007-10-26)
[785] Running external processes in Tcl and Tcl/Tk - (2006-06-29)
[779] The fragility of pancakes - and better structures - (2006-06-26)
Some other Articles
Cliff Lift simulator- Lynton to Lynmouth - in Tcl/Tkfill and expand on Tcl/Tk pack commandCurley brackets v double quotes - Tcl, Tk, ExpectLexical v Arithemetic testing, Bash and Perlstdout v stderr (Tcl, Perl, Shell)Effective Java training - the bootcamp approachPerl, PHP, Python, Tcl, Linux, MySQL, Ruby courses ...Python Script - easy examples of lots of basicsAll the special characters in HTML ...10 training days to Christmas.