
If you're writing a script that calls for user input, you had better prompt the user ... otherwise, the terminal / window will appear to hang and the user won't know what's going on. However - if you're reading your answers from a pre-prepared file or piping them in from another process, all of these immediately answered prompts will look really odd on the output.
In perl, you can use the -t file test, but
on a file handle to see if that file handle is connected to an interactive device, or is not interactive. Most commonly, it's used on STDIN. Here's a demo program:
# See if we are using an interactive input ...
# If we are, prompt the user. If not, just read
if (-t STDIN) {
print "How much? "; }
chop($value = <STDIN>);
print "You paid $value too much\n";
Samples of this running, interactive with the prompt:
Dorothy-2:perl grahamellis$ perl sinter
How much? 33
You paid 33 too much
Dorothy-2:perl grahamellis$
And non-interactive:
Dorothy-2:perl grahamellis$ echo 55 | perl sinter
You paid 55 too much
Dorothy-2:perl grahamellis$
Illustration - A delegate uses one of our machines during a practical session on a
Perl training course.
(written 2009-09-14, updated 2010-06-23)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
P215 - Perl - More about Files [1225] Perl - functions for directory handling - (2007-06-09)
[1709] There is more that one way - Perl - (2008-07-14)
[1832] Processing all files in a directory - Perl - (2008-10-11)
[2964] An introduction to file handling in programs - buffering, standard in and out, and file handles - (2010-09-21)
[3320] Reading the nth line from a file (Perl and Tcl examples) - (2011-06-09)
[3412] Handling binary data in Perl is easy! - (2011-08-30)
[3839] Spraying data from one incoming to series of outgoing files in Perl - (2012-08-15)
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)
[1467] stdout v stderr (Tcl, Perl, Shell) - (2007-12-10)
[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)
[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)
Some other Articles
TypeError: super() argument 1 must be type, not classobj (Python)Robust user input (exception handling) example in PythonTesting code in Python - doctest, unittest and othersPound Sign in Python ProgramBut I am reading from a file - no need to prompt (Perl)Low Sun - Autumn is hereHotel Booking Scam / Cost of calls to 070 numbersAutomated Browsing in PerlBack TomorrowAre you wanting to learn PHP?