#0888(matu氏)の書き込みを引用します:
>ちょっと本筋からそれてしまうのですが本(すぐに使えるPerl スクリプト〜)の
>6ページの解説によると「+>」と「+<」はともに「読み書き両用」となっているの
>ですが、機能の違いがなにか有るのでしょうか?
これは説明不足でした。同じ「読み書き両用」とはいっても、
"+>"は、既存のファイル内容をそのまま保存するのに対して、
"+<"は、オープンの時点でファイル内容をクリアするものです。
>前日の質問に補足をいたします。
>> print IN $_ ;
>の部分を
> print $_ ;
>のように標準出力に出せば、期待通り
>aaa
>xxx
>ccc
>ddd
>となりますが、
あ、すみません。「print $_;」と見まちがえていました。
同じファイル(IN)に書き戻すのですね。
このように「ひとつのファイルを読みつつ同時に書き換える」という
処理は難しいと思ってください。もしそれをするなら、seek関数を使って、
(1)どの位置(何バイトめ)から読むか、
(2)どの位置に書き込むか
をいちいち指定しないといけません。
また、そのためには、1行のデータサイズを固定するなどの手法で、
書き込むデータが次に読むべきデータを上書きしない工夫も必用です。
実際に、同じファイルに対して、seek関数をつかわず、平行して「読み」と
「書き」をおこなった場合、結果はどうなるかわかりません。
バッファリングの状況によっては、1行めのデータが全行にコピーされる
場合があるかもしれませんし、ファイル内容が消える場合もあると思います。
#ところで、このBBSのスクリプト、バグってます(いまさら)
#「修正」を実行すると、「><」が「<」に化けてしまいます|
#あとで新しいスクリプトに入れ替えておかねば。></」が「<」に化けてしまいます|></」はともに「読み書き両用」となっているの>