先頭に空白が入る現象は何故起こるのでしょうか。

[上に] [前に] [次に]
くろっくぁ 1999/08/13(金) 16:19:02
$out = "<HTML>\n<BODY>\n@new</BODY>\n</HTML>\n";

とした後

print OUT $out;

のようにしてファイルに出力すると

<HTML>
<BODY>
aaaaa
_aaaaa
__aaaaa
______</BODY>
</HTML>
("_"は空白)

のように書き込まれてしまいます。

print OUT "<HTML>\n<BODY>\n";
print OUT @new;
print OUT "</BODY>\n</HTML>\n";

とすると、ちゃんと

<HTML>
<BODY>
aaaaa
aaaaa
aaaaa
</BODY>
</HTML>

と書き込まれるのですが・・・
このような現象は何故起こるのでしょうか。

愚者 1999/08/13(金) 17:08:42
どんな風に@newにデータをいれてるんですか?

くろっくぁ 1999/08/13(金) 17:24:55
@lines = <IN>;
の後
@new = @lines[7..$#lines-3];
@new = @new[0..8];
unshift(@new, "$hoge\n");
としています。

ふじ 1999/08/13(金) 17:47:40
@a = ( 1, 2, 3);
のとき、
print @a;
123

print "@a";
1 2 3
と出力されます(仕様でしょう)
#空白が入る。

>aaaaa
>_aaaaa
>__aaaaa
なぜ空白が増えて行くのかは分かりませんが・・・
#空の要素がある?

tanaka 1999/08/30(月) 03:33:10
もう解決したと思いますが、
配列を、利用している場合は、
ファイルの読み込みと同じように、
whileまたは、foreachで行えば、
空白は、なくなると思います。
例:
foreach $yy (@new){
print $yy;

になります。

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