perlでファイルの内容を全て読み込むには???

[上に] [前に] [次に]
raguna [E-Mail] 1999/08/02(月) 22:12:00
始めましてragunaです、よろしく♪

perlでファイルの内容を全て読み込むにはどうすればいいんでしょう
か?
全て読み込むための関数などはあるのでしょうか?
よろしくお願いします。

葉月 1999/08/02(月) 22:18:26
主旨が、いまいち飲み込めないのは私だけ???
単純に考えちゃうと
open (IN, "filename");
@data = <IN>;
close (IN);
で、@dataにファイルの内容全てが入ると思うけど...
こんな単純なことで、いいのかしら?
# きっと、違うような気がする...

raguna [E-Mail] 1999/08/02(月) 23:24:04
おそらくそれでいいと思います>葉月さん
ファイルの内容を全て読み込んでそのあと表示させたいのですが・・
open (IN, "filename");
@data = <IN>;
close (IN);
で読み込んだ後、
print "@data";
でいいのでしょうか?

葉月 1999/08/02(月) 23:44:16
これで、よかったの...
filename内の内容が、例えば、
aaa[改行]
bbb[改行]
ccc[改行]
[EOF]
って、なっていた場合、
print "@data";だと、
aaa bbb ccc と表示され、
print @data;だと、
aaabbbccc と表示されますよ。。。

ふじ 1999/08/03(火) 00:27:52
>print @data;だと、
>aaabbbccc と表示されますよ。。。
読み込むときに行末の改行をchopしてないから、
print @data;
で、
aaa[改行]
bbb[改行]
ccc[改行]
この様に出ますよ。

配列でなくて変数に一気に読み込むなら(多分この方が早いしメモリ消費も少ない)
open(IN, "< filename");
read (IN, $buf, (-s "filename"));
print $buf;
close IN;
こんなかんじ。

ファイルが巨大で、メモリに全部読み込むのが嫌なら
open(IN, "< filename");
while(<IN>){
print $_;
}
close IN;
こうしましょう。

raguna 1999/08/03(火) 02:37:30
[[解決]]
うまくいきました♪
葉月さん,ふじさんどうもありがとうございました。

葉月 1999/08/03(火) 08:28:03
わお...ふじさんにつっこまれてしまった。。。
>aaabbbccc と表示されますよ。。。
注:1.ブラウザで表示した場合...2.[改行]は、<br>じゃない

J.Naka 1999/09/12(日) 16:32:15
Re:ふじさん 1999/08/03(火) 00:27:52

>read (IN, $buf, (-s "filename"));
↑の -s ってのは何を意味するのでしょうか?

#古いレスですんません

B-Cus 1999/09/12(日) 17:02:23
そういう文法とか関数については、マニュアル読みましょうってば。
いちいち聞いてたらきりがないでしょ。
 http://www.att.or.jp/perl/man/perlfunc.1.html
読んでわからないものだけ聞くようにしましょう。

こういうのを繰り返すようだと、「自分で調べるのがめんどくさい
から他人に聞いているのだろう」と思われても仕方ないですよ。

J.Naka 1999/09/12(日) 19:30:08
B-Cusさん、レス有り難う御座います。

提示ページはかなり難解ですが、気張って読解してみます。

#ファイルの変数取り込みは、@buf = <IN>;とか
while(<IN>){$buf .= $_;}などを使ってました。
ですから、readを使う事が無かったのですが、
スピードが速いという一文に引かれたと言う事です。

簡単に処理でも、CGI経由は、えらくノロイなぁと思う今日このごろ(^^;

[上に] [前に] [次に]