大佬教程收集整理的这篇文章主要介绍了在Perl中,当我从文件中读取它时,我可以限制一行的长度(比如fgets)吗?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
fgets允许我通过让我在每次调用期间指定要读取的字节数来实现这一点,并且基本上让我将一条长行拆分为我的最大长度.在perl中有类似的方法吗?我看到了关于sv_gets的一些内容,但我不确定如何使用它(尽管我只是粗略的谷歌搜索).
本练习的目的是避免在读取数据后进行额外的解析/缓冲. fgets在N个字节后或达到换行符时停止.
编辑我觉得我很困惑.我想读取X行,每行最大长度为Y.我不想读取超过Z字节的总数,我宁愿不一次读取所有Z字节.我想我可以这样做并分割线,但想知道是否还有其他方法.如果这是最好的方法,那么使用read函数和手动解析是我最容易的选择.
谢谢.
如果你想自己做,那对getc非常简单.
sub fgets { my($fh,$limit) = @_; my($char,$str); for(1..$limit) { my $char = getc $fh; last unless defined $char; $str .= $char; last if $char eq "\n"; } return $str; }
将每个字符连接到$str是有效的,因为Perl会机会性地重新分配.如果Perl字符串有16个字节并且你连接另一个字符,Perl会将它重新分配为32个字节(32个转到64,64到128 ……)并记住长度.接下来的15个连接不需要重新分配内存或调用strlen.
以上是大佬教程为你收集整理的在Perl中,当我从文件中读取它时,我可以限制一行的长度(比如fgets)吗?全部内容,希望文章能够帮你解决在Perl中,当我从文件中读取它时,我可以限制一行的长度(比如fgets)吗?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。