ファイルから読み込んで配列へ
PerlでCGIスクリプト(掲示板もどき)を作成しています。
配列の操作がうまくいかず、ご教授頂きたいと思います。
<やりたい事>
1.ブラウザ上のフォームからの入力を、カンマ区切りでテキストファイルに追記して保存。
2.そのテキストの一部を使ってHTMLで表を作る。
<実際の作業>
1.フォームからのデータはcgi-lib.plで連想配列として受け取り、unshiftでテキストファイルへ追記する。
&ReadParse;
#フォームからデータを受け取る
$o=$in{'name'};
$p=$in{'mail'};
$q=$in{'title'};
$r=$in{'comment'};
open(IN,"xxx.txt");
@tmp1=<IN>;
close(IN);
#1件1行として新規データを追加する
unshift (@tmp1,"$oo" , "," , "$pp" , "," , "$qq" , "," , "$rr","\n");
open(OUT,">xxx.txt");
print OUT @tmp1;
close(OUT);
2.xxx.txtのデータを読み込んで、1列目(name)と3列目(title)だけを使った表を作る。
データを読み込む時点でつまづき、先に進めません。
<テキストファイルの例>
1行目:a,b,c,d
2行目:e,f,g,h
3行目:i,j,k,l
以下同様
<症状>
print @tmp1;とすると、a~lの全てのデータが表示される。
$tmp1[0];とすると、(a)のみ表示される。
$tmp1[1];とすると、カンマ(,)が表示される。
$tmp1[2];とすると、(b)が表示される。
<質問>
一つの行(配列)に対して2回繰り返す処理(nameとtitle)と、行単位で繰り返す処理(1行目、2行目…)を合わせればいいのだろうと思っていますが、どうすればいいのかわかりません。
気分的には↓こんな感じです。
foreach {
"行の処理"
foreach {
"列の処理"
}
}
そもそも、区切り文字であるカンマが、配列に格納されている時点で失敗しているのかな?とも思っています。
宜しくお願いします。
なお、不足している情報がありましたら補足いたします。
お礼
テキストファイルの最後の行を改行するだけで解決できました。 出力時に\nを足せばそういうこともできるということですね。 どうもありがとうございました。