WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:CGIで、ファイルから読み込んだ配列を書き込んだら半角空白が

ぱるたん [MAIL] [WriteDate : Sun Jun 17 03:05:59 2001]

初めまして。
いつも楽しく拝見させていただいています。

さて、ただいま独学でPerlを勉強中なのですが、
独学だけに基礎がぽっかり抜け落ちているようで、
素人目にもおそろしく初歩的だと分かるところでつまずいています。

1日にひとつずつ配列の要素が削除されていく機能を作っているの
ですが、ファイルから読み込んであれこれ処理をした配列を、同じ
ファイルに上書き保存しようとすると、2つ目以降の要素の行頭に
半角スペースが挿入されてしまいます。

下記の抜粋文だけのスクリプトでも発生するため、配列の基礎の
基礎を知らないからだとにらんでいます。

どうか対処法をご教授いただけないでしょうか。

#スクリプト抜粋#
$listdata = "list.dat";

open(IN,"$listdata");
@list = <IN>;
close(IN);

open(OUT,">$listdata");
print OUT "@list";
close(OUT);
#################


#元のファイル内容#
1
2
3
4
5
6
#################

#書き込まれた内容#
1
2
3
4
5
#################


ふじ [URL] [WriteDate : Sun Jun 17 03:56:46 2001]

> print OUT "@list";
print OUT @list;
"" でくくると、各要素の間に空白が挟まります。
そういうものだと思って下さい。

以下 perlfaq5 より。

Why do I get weird spaces when I print an array of lines?

      Saying

          print "@lines\n";

      joins together the elements of @lines with a space between
      them.  If @lines were ("little", "fluffy", "clouds") then
      the above statement would print:

          little fluffy clouds

      but if each element of @lines was a line of text, ending a
      newline character ("little\n", "fluffy\n", "clouds\n")
      then it would print:

          little
           fluffy
           clouds

      If your array contains lines, just print them:

          print @lines;


ばるたん [WriteDate : Sun Jun 17 14:10:49 2001]

うわあああああ!
こんなことだったんですね、解決いたしました!

ふじさん、大感謝です!

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]
ChaichanPAPA's World