1行ずつ読み込むファイルを開きました。
open(FH,"<","$myfile") or die "could not open $myfile: $!";
while (<FH>)
{
# ...do something
}
プログラムの後半で、私はファイルを再読み込みしようとします(もう一度ファイルを見ていきます)。
while (<FH>)
{
# ...do something
}
そして、ファイル内のコントロールがEOFにあり、ファイルの最初の行から反復しないかのように認識されます。これを回避する方法は?ファイルが大きいので、配列としてメモリに保存したくありません。だから私の唯一の選択肢は、ファイルをもう一度開いて開くことですか?
ベストアンサー
seekを使用してファイルの先頭まで巻き戻します。
seek FH, 0, 0;
または、より冗長になります。
use Fcntl;
seek FH, 0, SEEK_SET;
入力として検索する必要がある場合は、フィルタとして使用できないため、ツールの有用性が大幅に制限されることに注意してください。パイプから読み取ることができると非常に便利です。すべての統計の57%が構成されていることを念頭に置いて、入力を検索するプログラムの98%が不必要にそれを行っていることに気づくべきです。あなたがそれを二度読む必要がないような方法であなたのデータを処理することを非常に懸命に試みなさい。それが可能であれば、あなたのプログラムはもっと便利になるでしょう。
関連記事
- Perlのダイヤモンド演算子(nullファイルハンドル)は現在どのファイルから読み込まれているのですか
- android - ユニバーサル画像ローダーを使用して既に読み込まれている画像を再読み込みするListview
- プログラムでSTDINから読み込むか、Perlで入力ファイルを読み込む
- android - Admob広告が読み込まれていません - 広告の読み込みに失敗しました:0
- 書き込み終了が既に閉じられているパイプの読み込み終了を明示的に閉じる必要がありますか?
- javascript - ページの読み込み/再読み込み時にJquery UIのアクティブタブを設定する
- javascript - iFrameが読み込まれているときに読み込みメッセージを表示する方法は?
- bash - パイプラインから読み込むwhile読み込みループの後に変数がリセットされる
転載記事の出典を記入してください: perl – 既に読み込まれているファイルハンドルからの再読み込み - コードログ