RubyCGI.org

RubyでCGIを作ろう


2章4節 ファイルの読み出し 更新日付: [2002-05-17]



今回はファイルの読み出しを学びましょう。

ファイルを読み出すときには
1.読み出し用にファイルを開く(変数に連結する)
2.ファイルの中身を読み出す
3.ファイルを閉じる
という手順が必要になります。それではプログラムを見てみましょう。

今回はデータ部分とプログラム部分に別れているので注意しましょう。

-- データ 始まり -- data241.log

hello world

-- データ 終わり --

-- プログラム 始まり -- test241.cgi

#!/usr/local/bin/ruby
print "Content-type: text/html\n\n"

FILENAME = "data241.log"
log = ""

fh = open(FILENAME)
fh.each{|l|
log += l
}
fh.close

print "<html><body>log = #{log}</body></html>"

-- プログラム 終わり --

まずtest241.cgiでは1行目、2行目は決り文句です。4行目はFILENAMEに読みこむファイルの名前「data241.log」を入れています。プログラムではこのようにファイル名などは定数に入れておき、もし読みこむファイル名が変わった場合なども変更が楽になるようにしておきます。小文字だと変数(プログラム中で変更可能)、大文字だと定数(プログラム中で変更不可)となります。5行目でlogの変数を定義しています。rubyで変数の定義は何らかの代入すると行われます。

7行目から11行目が今回のテーマのファイルの読み込みです。まず7行目ではファイルのオープンを行いfhに連結しています。8行目から10行目でループを行っています。fhを1行ずつ評価します。(fh.each{)毎行lにファイルの内容を代入して(|l|)それをlogに追加しています。(log += l)

なおこの部分は以下のように書き換え可能です。

for l in fh{
log += l
}

他の言語をやっていた人はfor文の方が馴染みがあるのではないでしょうか。

13行目で読み出した変数logを表示します。次にdata241.logの内容を「good bye world」に書き換えてアップしてから、test241.cgiを表示して下さい。「hello world」だった部分が「good bye world」に変わりましたね。


なお、もしこのファイル名が存在しなかった場合にはプログラムはうまく作動しない為にWebの表示は「ドキュメントがありません」になってしまいます。注意して下さい。もしなかった場合のエラー処理などはそのうちに説明したいと思います。

あと定数というのは誤解の無い様にいっておきますと決して変更できない変数ではないです。[ruby-list:13501]辺りにそのような話題があったので気になる人はそちらも参照して下さい。


今回始めて使った命令など
定数
open文
each文
for文


RubyによるCGIプログラミング
RubyによるCGIプログラミング

<− 前へ : 2.3. フォームのデータを受け取る | 次へ : 2.5. 配列 −>

RubyでCGIを作ろうトップ

| トップページ | 書籍「Ruby/GTKプログラミング入門」 | 書籍「RubyによるCGIプログラミング」 | RubyでCGIを作ろう | リンク集 | ツールなど | 自己紹介 |