作者: 藤岡和夫
日時: 2002/7/07(23:55)
On Sun, 7 Jul 2002 23:00:05 +0900
"KAWAI,Takanori" <GCD00051@...> さんwrote:

> そう思ってサンプル出したんですけど、あれではダメですか?
> 実際に確かめてみるのが一番の早道だと思いますけど、
> このスクプリプトではいかがでしょうか?
> 全体を読み込んでいるようには私は思っていませんけど。
> 
> [スクリプト]
> open OUT, '>kaba.txt';
> binmode OUT;
> print OUT <<EOD;
> kaba1\x1A
> kaba2\x1A
> kaba3\x1A
> EOD
> close OUT;
> print "\n----TEST1----\n";
> open IN1, '<kaba.txt';
> while(<IN1>) {
>   print scalar(localtime), $_;
> }
> close IN1;
> 
> print "\n----TEST2----\n";
> open IN2, '<kaba.txt';
> binmode IN2;
> while(<IN2>) {
>   print scalar(localtime), $_;
> }
> close IN2;
> 
> [実行結果]
> 
> ----TEST1----
> Sun Jul  7 22:53:34 2002kaba1
> ----TEST2----
> Sun Jul  7 22:53:34 2002kaba1^Z
> Sun Jul  7 22:53:34 2002kaba2^Z
> Sun Jul  7 22:53:34 2002kaba3^Z
> 
> ついでに
> while(<IN2>) {
>   chomp;
>   print scalar(localtime), $_, ":";
> }
> 
> とchompを入れれば改行もきれいにはずせると思います。

 すみません。丁寧にありがとうございます_(__)_

 完全に勘違いしていました(^^;)binmodeでバイナリデータをreadで取り扱う例
が普遍的なものだと思い込んでいました。binmodeであろうとなかろうと<>で読
み込む場合には改行で区切られるわけですね。

 PerlのCookbookでは、binmodeで<>を使う場合は$/にそのシステムの改行文字
を設定する必要があると書いてありますが(p.297)、これは必要ないのでしょう
か。

藤岡 和夫
FGALTS@...
kazuf@...
TS Networkのために http://homepage1.nifty.com/kazuf/