$5 ファイルからの入力

5-2 タブ区切りデータから表をつくる

ファイル入力を使った、簡単な例を作ってみましょう。
ここでは、タブ区切りテキストファイルを読み込んで、次のHTMLの表を作ってみます。
なお、データは「http://www.supercars.net/」のサイトを参考にしてます。

スーパーカー

メーカー名前排気量馬力/回転最高速度
ランボルギーニカウンタックLP400 3929375/8000309
ランボルギーニミウラP400SV3929385/7850290
フェラーリ512BB 4942360/6200303
フェラーリ288GTO2855400/7000304
フェラーリディーノ246GT 2418175/7000227

テキストファイルは、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行目の左辺をそのまま書いてもできます。


Next: 5-3 簡単なリレーショナルデータベース

Previous: 5-1 ファイルからの入力

Contents


Foundation of CGI Page

春風はるか haruka@harukaze.net