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 as below, or enter http://melksh.am/nnnn for individual articles
T209 - Tcl/Tk - File and Directory Handling [779] The fragility of pancakes - and better structures - (2006-06-26)
[785] Running external processes in Tcl and Tcl/Tk - (2006-06-29)
[1407] Reading from another process in Tcl (pipes and sockets) - (2007-10-26)
[1426] Buffering up in Tcl - the empty coke can comparison - (2007-11-10)
[2467] Tcl - catching an error before your program crashes - (2009-10-22)
[3192] Tcl - Some example of HOW TO in handling data files and formats - (2011-03-04)
[3320] Reading the nth line from a file (Perl and Tcl examples) - (2011-06-09)
[3429] Searching through all the files in or below a directory - Ruby, Tcl, Perl - (2011-09-09)
[3617] The fileutil package and a list of file system commands in Tcl - (2012-02-18)
[4461] Reading from a URL, and reading Json, from your Tcl script - (2015-03-12)
[4523] Catching failed commands and not crashing the program in Tcl - (2015-10-10)
[4524] Tcl - a new example for data reformatting - (2015-10-10)
P207 - Perl - File Handling [12] How many people in a room? - (2004-08-12)
[114] Relative or absolute milkman - (2004-11-10)
[255] STDIN, STDOUT, STDERR and DATA - Perl file handles - (2005-03-23)
[616] printf - a flawed but useful function - (2006-02-22)
[618] Perl - its up to YOU to check your file opened - (2006-02-23)
[702] Iterators - expressions tha change each time you call them - (2006-04-27)
[867] Being sure to be positive in Perl - (2006-09-15)
[1312] Some one line Perl tips and techniques - (2007-08-21)
[1416] Good, steady, simple example - Perl file handling - (2007-10-30)
[1442] Reading a file multiple times - file pointers - (2007-11-23)
[1709] There is more that one way - Perl - (2008-07-14)
[1841] Formatting with a leading + / Lua and Perl - (2008-10-15)
[1860] Seven new intermediate Perl examples - (2008-10-30)
[1861] Reactive (dynamic) formatting in Perl - (2008-10-31)
[2233] Transforming data in Perl using lists of lists and hashes of hashes - (2009-06-12)
[2405] But I am reading from a file - no need to prompt (Perl) - (2009-09-14)
[2818] File open and read in Perl - modernisation - (2010-06-19)
[2821] Chancellor George Osborne inspires Perl Program - (2010-06-22)
[2833] Fresh Perl Teaching Examples - part 2 of 3 - (2010-06-27)
[3326] Finding your big files in Perl - design considerations beyond the course environment - (2011-06-14)
[3548] Dark mornings, dog update, and Python and Lua courses before Christmas - (2011-12-10)
[3830] Traversing a directory in Perl - (2012-08-08)
[3839] Spraying data from one incoming to series of outgoing files in Perl - (2012-08-15)
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.