The size of reads for buffered I/O is configurable (since 5.014), but only when Perl is compiled.
You could use syread instead of buffered I/O.
$ strace perl -e'1 while read(STDIN, $buf, 512)' <a 2>&1 | grep 'read(
+0'
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 8192) = 8192
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 8192) = 8192
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 8192) = 3616
read(0, "", 8192) = 0
$ strace perl -e'1 while sysread(STDIN, $buf, 512)' <a 2>&1 | grep 're
+ad(0'
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 512) = 512
read(0, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 512) = 32
read(0, "", 512) = 0
|