プロが教えるわが家の防犯対策術!

表形式のデータをエクセルからテキストファイルでFTPし、そのデータをCGIで表示するものを作成中です。
FTPまで8割くらいできたところで、CGI(perl)に取り掛かり、まず、データの読み込みが出来ていることを確認するために、読んだデータをそのまま打ち出すルーチンをつくり、小さなデータで実行してみたところ以下の事象が起こりました。

---- perlのコード(部分) ----
foreach $line (@lines) {
@a = split(/,\t/, $line);
foreach $a (@a) {
print "<$a> ";
}
print "<br>\n";
}
------------------
@linesはデータの項目群(1行分)のイメージです。項目の区切り文字として「,\t」を使用しています。

---結果のブラウザ表示の例(一部)---
<[Format]> <#FFFFFF> <#555555> <#F8F8FA> <true >
----------------------------
表示された最後の項目(上例の場合true)の後にスペースが開いてしまいます。
いろいろ調べたところ、データには異常ない(スペースはない)ですし、試行錯誤して最後に気がついたのがブラウザ表示のソースを見ること

---ブラウザのソース---
<[Format]> <#FFFFFF> <#555555> <#F8F8FA> <true
> <br>
---------------------
となっており、ソースの改行がスペースの原因ということまではわかりました。
また、上記例は5項目ですが、行により項目数が違いますが、全行とも必ず最後の項目の右括弧(>)の前で改行されてしまっています。
CGI側からの出力は<br>の後の改行だけだと思っているのですが、なぜ最終項目だけ改行がはいるのでしょうか? しかも>の前に・・・

データはちゃんと読めているようなので、作業をすすめる上では問題ないのですが、どうも気になりますのでどなたかヒントをお願いします。(なお、サーバはUNIXのはずです。)

A 回答 (1件)

@line にファイルから読み込んだデータがそのまま入っているのでは


ないでしょうか。例えば、こんな感じで @line = <> ;
そうであれば、chomp @line として各行にある行末の改行をとればよい
です。
    • good
    • 0
この回答へのお礼

気が付きませんでした。おはずかしい。
多分その通りですね。お手数かけました。

お礼日時:2008/05/23 08:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!