readline - fetch a record from a file

- NAME
- SYNOPSIS
- DESCRIPTION

# NAME

readline - fetch a record from a file

# SYNOPSIS

readline EXPR

# DESCRIPTION

Reads from the filehandle whose typeglob is contained in EXPR. In scalar context, each call reads and returns the next line, until end-of-file is reached, whereupon the subsequent call returns undef. In list context, reads until end-of-file is reached and returns a list of lines. Note that the notion of ``line'' used here is however you may have defined it with `$/` or `$INPUT_RECORD_SEPARATOR`). See $/ in the perlvar manpage.

When `$/` is set to `undef`, when `readline()` is in scalar context (i.e. file slurp mode), and when an empty file is read, it returns `''` the first time, followed by `undef` subsequently.

This is the internal function implementing the `<EXPR>` operator, but you can use it directly. The `<EXPR>` operator is discussed in more detail in I/O Operators in the perlop manpage.

        $line = <STDIN>;
        $line = readline(*STDIN);           # same thing

If readline encounters an operating system error, `$!` will be set with the corresponding error message. It can be helpful to check `$!` when you are reading from filehandles you don't trust, such as a tty or a socket. The following example uses the operator form of `readline`, and takes the necessary steps to ensure that `readline` was successful.

        for (;;) {
            undef $!;
            unless (defined( $line = <> )) {
                die $! if $!;
                last; # reached EOF
            }
            # ...
        }

readline - fetch a record from a file