ファイル入力を使った、簡単な例を作ってみましょう。
ここでは、タブ区切りテキストファイルを読み込んで、次のHTMLの表を作ってみます。
なお、データは「http://www.supercars.net/」のサイトを参考にしてます。
| メーカー | 名前 | 排気量 | 馬力/回転 | 最高速度 |
|---|---|---|---|---|
| ランボルギーニ | カウンタックLP400 | 3929 | 375/8000 | 309 |
| ランボルギーニ | ミウラP400SV | 3929 | 385/7850 | 290 |
| フェラーリ | 512BB | 4942 | 360/6200 | 303 |
| フェラーリ | 288GTO | 2855 | 400/7000 | 304 |
| フェラーリ | ディーノ246GT | 2418 | 175/7000 | 227 |
テキストファイルは、Perlの場合と同じものとします(ファイル名は car.text)。
CGIは次の通りです。
1: #! /usr/local/bin/ruby
2:
3: HTML1 = "<HTML><HEAD><TITLE>スーパーカー</TITLE></HEAD><BODY><H2>スーパーカー</H2>
4: <TABLE BORDER>
5: <TR><TH>メーカー</TH><TH>名前</TH><TH>排気量</TH><TH>馬力/回転</TH><TH>最高速度</TH></TR>"
6: HTML2 = "</TABLE></BODY></HTML>"
7:
8: table = []
9:
10: file = open('car.text', 'r')
11: lines = file.readlines()
12:
13: for line in lines
14: aline = line.split("\t")
15: tline = "<TR><TD>%s</TD><TD>%s</TD><TD>%s</TD><TD>%s</TD><TD><B>%s</B></TD></TR>\n" % aline
16: table = table.push(tline)
17: end
18:
19: print "Content-Type: text/html\n\n"
20: print HTML1
21: print table
22: print HTML2
13行目からのループが、このプログラムの本質的な部分です。
14行目は、これだけみると普通ですが、
最初に「[Maker, Name, Engine, Power, Speed] = line.split("\t")」と書いたら、
これでエラーが出たのです。
どうも「[a, b] = 配列」という形はダメみたいです。
(その後いじってみて、「a, b = 配列」としたら思い通りに出来ました。なんじゃあ???)
配列の各要素に変数がつけられなかったので、15行目で「%」を使った方式で文字列を作ってます。
16行目で、配列tableの要素として追加してます。
ちなみに、16行目の「tline」の部分に、15行目の左辺をそのまま書いてもできます。