Perl Programming Documentation
Download Perl
Explore

Manual

- Overview
- Tutorials
- FAQs
- History / Changes
- License

Reference

- Language
- Functions
- Operators
- Special Variables
- Pragmas
- Utilities
- Internals
- Platform Specific

Modules

- A • B • C • D • E
- F • G • H • I • L
- M • N • O • P • S
- T • U • X

Tools

- Preferences

# readline

Perl 5 version 26.0 documentation
Go to top
Show recent pages
Recently read

# readline

Perl functions A-Z | Perl functions by category | The 'perlfunc' manpage

- readline EXPR
- readline

  Reads from the filehandle whose typeglob is contained in EXPR (or from `*ARGV` if EXPR is not provided). 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 whatever you may have defined with $/ (or `$INPUT_RECORD_SEPARATOR` in English). See $/ in perlvar.

  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 perlop.

          my $line = <STDIN>;    my $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 dies if the result is not defined.

          while ( ! eof($fh) ) {        defined( $_ = readline $fh ) or die "readline failed: $!";        ...    }

  Note that you have can't handle readline errors that way with the `ARGV` filehandle. In that case, you have to open each element of @ARGV yourself since eof handles `ARGV` differently.

          foreach my $arg (@ARGV) {        open(my $fh, $arg) or warn "Can't open $arg: $!";        while ( ! eof($fh) ) {            defined( $_ = readline $fh )                or die "readline failed for $arg: $!";            ...        }    }