Hello, world!

最初のRubyプログラム(Linux)

昔から言語を勉強するときに最初に学ぶことは,画面に「Hello, world」と出力するプログラムを作ることです。 日本語なら「こんにちは!」と出力すればいいでしょう。 Ruby なら次のようになります。

#! /usr/bin/ruby

print "こんにちは!\n";

これを hello.rb というファイル名で作ります。

次に,このプログラムに実行許可を与えます。

chmod 755 hello.rb

hello.rb を実行するには次のように打ち込みます。

./hello.rb

画面に「こんにちは!」と表示されることを確認して下さい。

最初のCGI(Linux)

これはまだ CGI ではありません。 これを CGI にするには,次のように直します。

#! /usr/bin/ruby

print "Content-Type: text/html\n\n";
print "こんにちは!\n";

念のためこれも実行してみましょう。

./hello.rb

うまくいったなら,これをサーバに送り,ブラウザで動作を確認しましょう。

サーバによっては hello.cgi という名前にしないと後でCGIとして実行できないことがあります。 また,サーバによってはCGIを禁止しているところがあります。

Windows の場合

Windowsの場合は行末がCRLFの場合にうまくいきません。 行末をLFで保存するか,FTPソフトでサーバに送る際にテキストモード(アスキーモード)で送る必要があります。

理由:Windowsの行末はCRLFですがUnixの行末はLFだけです。 このため,パソコンで頭に #! /usr/bin/ruby と書いたつもりでもUnixからは #! /usr/bin/rubyCR と見えてしまい,/usr/bin/rubyCR というコマンドはないというエラーになってしまうわけです。

Windowsのメモ帳でUTF-8で保存すると,BOMが付くのでエラーになります。 まともなテキストエディタでUTF-8Nで保存しましょう。

文字化けを防ぐ方法

print "Content-type: text/html\n\n"; を次のようにして文字コードを指定しましょう。

print "Content-type: text/html; charset=SHIFT_JIS\n\n";
print "Content-type: text/html; charset=EUC-JP\n\n";
print "Content-type: text/html; charset=UTF-8\n\n";

printとputsの違い

printは行末を付けませんので明示的に "\n" を出力する必要がありますが,putsは行末を出力します。

#! /usr/bin/ruby
puts "Content-Type: text/html";
puts
puts "こんにちは!";

大量のprintやputsを書きたくない……

次のようにできます。

#! /usr/bin/ruby

print <<HOGE
Content-Type: text/html

<html>
  <head>
    <title>はろー</title>
  </head>
  <body>
    <p>こんにちは!</p>
  </body>
</html>
HOGE

奥村晴彦

Last modified: 2007-01-11 16:10:36