CGI(Perl)で書き込み時に空白をなくすには?

[上に] [前に] [次に]
どっと 2000/03/21(火) 00:14:18
Win98&Perl for Win 5で

open( IN, "test.txt" );
@data = <IN>;
close( IN );

open( OUT, ">test.txt" );
print OUT "@data";
close( OUT );

test.txt-------------
テスト
テスト
テスト
-------------------
とするとtest.txtの中身が
test.txt-------------
テスト
テスト
テスト
-------------------
になり、文字列の先頭に半角スペース(空白)が入ります。
空白が入らないようにするにはどうすればいいでしょうか?
また何故、空白が入るのでしょうか?
わかる方ご教授お願いします。

どっと 2000/03/21(火) 00:16:13
プログラムを動かした結果が以下のようになります。
test.txt-------------
テスト
 テスト
 テスト
-------------------
こうなります。

kala 2000/03/21(火) 00:35:13
print "@data" は print join(' ', @data) と(デフォルトでは)同じ動作をします。

解決法。
print OUT join('', @data);
の行を次のいずれかに書き換えます。

(1) print OUT @data;
(2) print OUT join('', @data);
(3) $" = ''; print OUT "@data";

kala 2000/03/21(火) 00:37:03
>print OUT join('', @data);
>の行を……

正しくは

print OUT "@data";
の行を……

でした。細かい点ですが訂正。

どっと 2000/03/21(火) 00:54:16
[[解決]]
kalaさんへ

早速ありがとうございました。
解決法(1)で試したところ空白が入らなくなりました。
ありがとうございました。丸1日悩んでいた問題が解決しました。

「print OUT "@data"」と「print OUT @data」はまったく
別物とは。。。勉強になりました。

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