プロが教えるわが家の防犯対策術!

1つのテキストファイル(5~10KB)を一度に変数に読み込むために、

open(IN, $file);
my $data = join('',<IN>);
close(IN);

と、

my $data;
open(IN, $file);
while(<IN>){ $data .= $_ }
close(IN);

の2つを比較していたのですが、自分がベンチマークをとった限りでは後者の方が速いみたいです。これより早い方法はないでしょうか?

A 回答 (3件)

$/=undef;


my $data;
open(IN, $file);
$data=<IN>;
close(IN);
かなあ
    • good
    • 2
この回答へのお礼

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

お礼日時:2005/02/17 20:13

#2です。


readは効率がよくないようで、さらに
ファイルサイズを得るのに-s使ったので全然ダメでした。失礼!
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/17 20:11

open IN, $file;


read IN,$data,-s $file;
close IN;

行入力より早そうな気はするけど実際のところは知りません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!