Getting User Input

At this point, you’re probably wondering how to get a value from the keyboard into a Perl program. Here’s the simplest way: use the line-input operator, <STDIN>.[57]

Each time you use <STDIN> in a place where a scalar value is expected, Perl reads the next complete text line from standard input (up to the first newline) and uses that string as the value of <STDIN>. Standard input can mean many things; unless you do something uncommon, it means the keyboard of the user who invoked your program (probably you). If there’s nothing waiting for <STDIN> to read (typically the case unless you type ahead a complete line), the Perl program will stop and wait for you to enter some characters followed by a newline (return).[58]

The string value of <STDIN> typically has a newline character on the end of it.[59] So, you could do something like this:

    $line = <STDIN>;
    if ($line eq "\n") {
      print "That was just a blank line!\n";
    } else {
      print "That line of input was: $line";
    }

In practice, you don’t often want to keep the newline, so you need the chomp operator.

[57] This is a line-input operator working on the filehandle STDIN, but we can’t tell you about that until we get to filehandles (in Chapter 5).

[58] To be honest, it’s normally your system that waits for the input; Perl waits for your system. Though the details depend upon your system and its configuration, you can generally correct your mistyping with a backspace key before you press return since your system handles that, ...

Get Learning Perl, Fourth Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.