ファイルを1行ずつ読み取り、一定量の入力データまで各行を格納するコードを作成しようとしています。異常に大きなファイルを吸い込むのを防ぐだけでなく、エンドユーザーが悪意を持って1行にデータのギグのようなものを置くのを防ぎたいです。やる$str = <FILE>
ことはまだ全行を読みます、そしてそれは非常に長くて私の記憶を爆破するかもしれません。
fgetsを使用すると、各呼び出し中に読み取るバイト数を指定し、基本的に1つの長い行を最大長に分割することができます。perlでこれを行う同様の方法はありますか?私は何かを見ましたsv_gets
が、それをどのように使うのかわかりません(私は大雑把なグーグル検索をしただけですが)。
この演習の目的は、データの読み取り後に追加の解析/バッファリングを行う必要がないようにすることです。fgetsは、Nバイト後、または改行に達したときに停止します。
編集私はいくつか混乱したと思います。それぞれ最大長YのX行を読みたい。合計でZバイトを超えて読みたくないので、一度にすべてのZバイトを読みたくない。私はそれをして行を分割することができたと思いますが、他の方法があるかどうか疑問に思います。それが最善の方法である場合は、読み取り関数を使用して手動解析を実行するのが私の最も簡単な方法です。
ありがとう。