# read - perldoc - phpman

> **TLDR:** Shell builtin for retrieving data from `stdin`.
>
- Store data that you type from the keyboard:
  `read {{variable}}`
- Store each of the next lines you enter as values of an array:
  `read -a {{array}}`
- Specify the number of maximum characters to be read:
  `read -n {{character_count}} {{variable}}`
- Assign multiple values to multiple variables:
  `read <<< "{{The surname is Bond}}" {{_ variable1 _ variable2}}`
- Do not let backslash (`\`) act as an escape character:
  `read -r {{variable}}`
- Display a prompt before the input:
  `read -p "{{Enter your input here: }}" {{variable}}`
- Do not echo typed characters (silent mode):
  `read -s {{variable}}`
- Read `stdin` and perform an action on every line:
  `cat {{/dev/stdin|path/to/file|...}} | while read line; do {{echo|ls|rm|...}} "$line"; done`

*Source: tldr-pages*

---

    read FILEHANDLE,SCALAR,LENGTH,OFFSET
    read FILEHANDLE,SCALAR,LENGTH
            Attempts to read LENGTH *characters* of data into variable
            SCALAR from the specified FILEHANDLE. Returns the number of
            characters actually read, 0 at end of file, or undef if there
            was an error (in the latter case $! is also set). SCALAR will be
            grown or shrunk so that the last character actually read is the
            last character of the scalar after the read.

            An OFFSET may be specified to place the read data at some place
            in the string other than the beginning. A negative OFFSET
            specifies placement at that many characters counting backwards
            from the end of the string. A positive OFFSET greater than the
            length of SCALAR results in the string being padded to the
            required size with "\0" bytes before the result of the read is
            appended.

            The call is implemented in terms of either Perl's or your
            system's native [fread(3)](https://www.chedong.com/phpMan.php/man/fread/3/markdown) library function, via the PerlIO layers
            applied to the handle. To get a true [read(2)](https://www.chedong.com/phpMan.php/man/read/2/markdown) system call, see
            sysread.

            Note the *characters*: depending on the status of the
            filehandle, either (8-bit) bytes or characters are read. By
            default, all filehandles operate on bytes, but for example if
            the filehandle has been opened with the ":utf8" I/O layer (see
            "open", and the open pragma), the I/O will operate on
            UTF8-encoded Unicode characters, not bytes. Similarly for the
            ":encoding" layer: in that case pretty much any characters can
            be read.

