0

私が実際にやろうとしているのは、テキスト ファイルから行の範囲を抽出し、その範囲を別のファイルに出力することです。文字列の開始範囲は @secarr に格納され、対応する文字列の終了範囲は @exarr に格納されます。現在私が直面している問題は、$secarr[4] と $exarr[4] の範囲が EOF の近くにあるため、出力ファイルがそこまで終了することです。ただし、$secarr[5] と $exarr[5] およびその他の多くの範囲は、$secarr[4] と $exarr[4] 範囲の前に存在します。

抜け道を教えてください。

前もってありがとう、ファエズ

4

2 に答える 2

3

簡単な方法は、範囲ごとにファイルを再度開くことです。あなたも試すことができます:

  • ファイルが大きくない場合は、配列に読み込むことができます ( my @array = <$IN>;)。範囲ごとに、配列スライスを出力するだけです。
  • ファイルを一度だけ調べて、各行の範囲に出入りしているかどうかを確認できます。現在アクティブな範囲を記憶し、各行をそれらすべてに出力します (範囲は重複できますか?)
于 2012-08-02T14:25:47.250 に答える
0

ファイルのレコードへのシンプルなインターフェースを提供するTie::Fileを見たいと思うかもしれません。

于 2012-08-02T21:20:10.167 に答える