我正在尝试编写一段代码,逐行读取文件并存储每一行,最多可存储一定数量的输入数据。除了防止吸入异常大的文件外,我还想防止最终用户作恶并将诸如数据演出之类的东西放在一行上。做$str = <FILE>
仍然会读一整行,这可能会很长并且会破坏我的记忆。
fgets 让我通过让我指定在每次调用期间读取的字节数并基本上让我将一根长线分成我的最大长度来做到这一点。在 perl 中是否有类似的方法可以做到这一点?我看到了一些关于sv_gets
但不知道如何使用它的东西(尽管我只是粗略的谷歌搜索)。
本练习的目标是避免在读取数据后进行额外的解析/缓冲。fgets 在 N 个字节后或到达换行符时停止。
编辑我想我有些困惑。我想读取 X 行,每行的最大长度为 Y。我不想读取超过 Z 字节的总数,并且我不想一次读取所有 Z 字节。我想我可以这样做并拆分线路,但想知道是否还有其他方式。如果这是最好的方法,那么使用读取功能并进行手动解析是我最简单的选择。
谢谢。