• ベストアンサー

テキストファイルの高速な読み込みは?

1つのテキストファイル(5~10KB)を一度に変数に読み込むために、 open(IN, $file); my $data = join('',<IN>); close(IN); と、 my $data; open(IN, $file); while(<IN>){ $data .= $_ } close(IN); の2つを比較していたのですが、自分がベンチマークをとった限りでは後者の方が速いみたいです。これより早い方法はないでしょうか?

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

$/=undef; my $data; open(IN, $file); $data=<IN>; close(IN); かなあ

ytse
質問者

お礼

これは速いですね~ 同じ関数内で、ほかのファイルを配列に読み込む前に、「$/="\n";」とし忘れて、バグに苦しんでました(笑 ありがとうございます。

その他の回答 (2)

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.3

#2です。 readは効率がよくないようで、さらに ファイルサイズを得るのに-s使ったので全然ダメでした。失礼!

ytse
質問者

お礼

いえ、readもつかえることは頭にほとんどありませんでした。ご回答ありがとうございます。

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.2

open IN, $file; read IN,$data,-s $file; close IN; 行入力より早そうな気はするけど実際のところは知りません。

関連するQ&A