```{index} single: read; POSIX function ``` ```{index} single: POSIX::read; Perl function ``` # read Read up to `$nbytes` bytes from `$fd` into `$buffer`. ## Synopsis ```perl use POSIX qw(read); my $buf = ""; my $n = read($fd, $buf, 4096); ``` ## What you get back On success, the number of bytes read (or `"0 but true"` for EOF); on failure, `undef` (with `$!` set). The data is written into `$buffer` in place — truncated or grown to match the actual read length. ## Edge cases - Partial reads are normal on pipes, sockets, and terminals; always check the return length. ## Differences from upstream Fully compatible with upstream POSIX.