• ベストアンサー

ファイルの処理について

数百行のテキストファイルを5行づつ取り込んで処理をしたいのですが。。 どうすればいいのでしょうか? 一行づつは可能なんですが。。。 While(<FILEHANDL>){ 処理 } ヘルプ~。。。。

質問者が選んだベストアンサー

  • ベストアンサー
  • kumoz
  • ベストアンサー率64% (120/185)
回答No.2

No1 です。 最後が5行未満になった場合のことを忘れていました。 訂正します。 my @five_lines; while (<FILEHANDLE>) { push @five_lines, $_; unless (eof(FILEHANDLE)) { next if $. % 5; } # ここで @five_lines を処理する @five_lines = (); }

stockjp
質問者

補足

回答ありがとうございます。 すみません。%5の意味がわからないのですが。。

その他の回答 (2)

  • kumoz
  • ベストアンサー率64% (120/185)
回答No.3

% は、剰余演算子です。次の式は、 next if $. % 5; $. (現在の行番号) を 5 で割った余りを求めているものです。 余りが1から 4 までは真になりますので、次の行を読み込みます。 $. が 5 で割れる数字になると余りが 0 になるので偽になり、@five_lines に5行読み込んだことになるので、次の処理に移ります。

stockjp
質問者

お礼

ありがとうございます。 助かりました。

  • kumoz
  • ベストアンサー率64% (120/185)
回答No.1

特殊変数の $. を利用する方法があります。 my @five_lines; while (<FILEHANDLE) { push @five_lines, $_; next if $. % 5; # ここで @five_lines を処理する @five_lines = (); }

関連するQ&A