read
和 sysread
具有非常相似的文档。两者之间有什么区别?
最佳答案
关于 read
:
read
支持PerlIO层。 read
适用于任何Perl文件句柄[1]。 read
缓冲区。 read
以固定大小的8 KiB [2]块从系统中获取数据。 read
可能会阻塞[3]。 关于
sysread
:sysread
不支持PerlIO层(这意味着它需要原始的又名二进制句柄)。 sysread
仅适用于映射到系统文件句柄/描述符的Perl文件句柄[4]。 sysread
不缓冲。 sysread
执行单个系统调用。 sysread
如果有数据可以返回,则立即返回,即使数据量小于请求的量。 总结和结论:
read
可与任何Perl文件句柄一起使用,而sysread
限于映射到系统文件句柄/描述符的Perl文件句柄。 read
不兼容 select
[5],而sysread
不兼容select
。 read
可以为您执行解码,而sysread
要求您自己进行解码。 read
应该更快,而对于很大的读取,sysread
应该更快。 笔记:
open(my $fh, '<', \$var)
创建的文件句柄。 perl
时可以配置块的大小,默认值为8 KiB。 read
将准确返回请求的数量(如果可能),但是从管道中读取时,返回的数量可能更少。这些结果绝不能保证。 fileno
为此返回非负数。这些包括,例如,从纯文件,管道和套接字读取的句柄,但是[1]中没有提到的那些句柄。 关于perl - `read`和 `sysread`有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36315124/