在perl中,可以对具有读取功能的文件执行缓冲读取,例如C&f的fread()。但是,perl"中的write函数与read不相反。不幸的是",但"用于将格式化的记录写入文件" (http://www.perlfect.com/articles/perlfile.shtml)。该链接建议使用print。但是,与C中的read和fwrite()不同,它返回读/写项的数量,print只返回一个布尔值,表示输出是否成功(https://perldoc.perl.org/functions/print.html)。
或者C的fwrite()的结果无论如何都是无用的,因为部分可能已成功写入缓冲区,但实际上还没有刷新到文件中?与perl的读取和C的fread()相比,这似乎是不对称的,这保证了返回的项目数实际上已成功从文件读入缓冲区。因此,如果fwrite()的返回值报告已成功写入所有项目,则返回值不可靠。另一方面,有人可能会争辩说,如果返回值报告了一个简短的写入,那么返回值至少是有用的,因为在这种情况下,在实际尝试刷新文件时必须发生错误,因此确定数量是报告的项目虽然很短,但实际上已成功写入文件。
答案 0 :(得分:1)
syswrite()和sysread(),就像你要得到的一样接近。这些函数在引擎盖下使用write(2)和read(2)。
参数签名类似于C的read()/ write()函数,因为它们处理原始字节,而不是已知大小的n个元素。
标准警告:不要将perl的普通格式化I / O与sysread()/ syswrite()混合在同一个句柄上,除非你感到痛苦或深刻的魔法。