前提条件 拡張子:txtvbswsfjsphpjavahtmlutf8sjis 実行環境 : さくらインターネット キャラクタセット : UTF-8 テキスト改行コード : LF 拡張子:txtvbswsfjsphpjavahtmlutf8sjis #!/usr/local/bin/ruby print "Content-Type: text/html; Charset=utf-8\n\n"; # 標準エラー出力の出力先を標準出力に変更 $stderr = $stdout # ENV.inspect は、p ENV で出力される結果と一致しています print ENV.inspect print "\n"; print '\n'; # 想像通り、' の中では \ は \ という文字列です print "\n"; # これは改行コードです p ENV # nil(NULL) という概念が存在します a = nil print "|" print a # nil と表示されます print "|" print a.to_s # 変数が空(nil)の場合、空文字に変換されます print "|\n" # ヒアドキュメント /src="(.+?)">.+?src="(.+?)"/m =~ <<LABEL <script type="text/javascript" src="/js/tc.js"></script> <script type="text/javascript" src="/js/tc/cookie.js"></script> <script type="text/javascript" src="/js/tc/focus.js"></script> LABEL js_01 = ($1).to_s # ヒアドキュメントや文字列内の値のパースです。 # 式も書けます print <<LABEL <PRE> #{js_01} #{($2).to_s} #{js_01 + ','+ ($2).to_s} </PRE> LABEL print "#{js_01 + ','+ ($2).to_s}" =begin 範囲指定のコメント =end Ruby が出力する実行中のエラーメッセージは標準エラー出力に出力されるので デフォルトではエラーが出てもどの行で何が起こったか全く解りません。 PHP でも設定でエラーメッセージを出無いようにはできますが、通常、複雑なWEB アプリを作成することを前提としているので、デフォルトではエラーメッセージが 出力されるようになっているはずです。 また、PHP は実行環境の設定は、php.ini を変更するか、設定用の関数を実行する 事になっています。ですが、Ruby はその関係の情報が特別に整理されていない上に、 元々あまり考慮されていないようです。 Ruby は名前からしても、Perl に近い書式が多く見受けられます。これは、PHP から 入ったプログラマにはとても解りにくい結果を招きます。Perl でコードを書いてた プログラマが想像の付く事柄も、PHP で慣れてしまっているとファイルのパーミッシ ョンでさえ設定するのを忘れる程です ヒアドキュメントは PHP にもありますが、Perl ではそれしか無かった為に WEB アプリケーションにおける表現の最前線の場を PHP に完全に奪われてしまいました。 もちろんセッションが無かった事も大きかったですが、そういう意味で言うと Ruby は中途半端な構成だと感じます。今の時代で、アプリケーション開発を目的とした 場合、Perl と比べるのは特別な事情を除けばナンセンスですし、PHP とは全く 違ったものである以上、用途ははっきり分化されると思います ただ、Perl が難解で複雑な印象であるのに対して、Ruby は容易に目的を達成できる という印象があります。それは、後発の強みかどうかは解りませんが、Mechanize を使った WEB ページへの直接アクセスは今の時代に非常にマッチした手段を提供して くれている気がします
実行環境 : さくらインターネット キャラクタセット : UTF-8 テキスト改行コード : LF
#!/usr/local/bin/ruby print "Content-Type: text/html; Charset=utf-8\n\n"; # 標準エラー出力の出力先を標準出力に変更 $stderr = $stdout # ENV.inspect は、p ENV で出力される結果と一致しています print ENV.inspect print "\n"; print '\n'; # 想像通り、' の中では \ は \ という文字列です print "\n"; # これは改行コードです p ENV # nil(NULL) という概念が存在します a = nil print "|" print a # nil と表示されます print "|" print a.to_s # 変数が空(nil)の場合、空文字に変換されます print "|\n" # ヒアドキュメント /src="(.+?)">.+?src="(.+?)"/m =~ <<LABEL <script type="text/javascript" src="/js/tc.js"></script> <script type="text/javascript" src="/js/tc/cookie.js"></script> <script type="text/javascript" src="/js/tc/focus.js"></script> LABEL js_01 = ($1).to_s # ヒアドキュメントや文字列内の値のパースです。 # 式も書けます print <<LABEL <PRE> #{js_01} #{($2).to_s} #{js_01 + ','+ ($2).to_s} </PRE> LABEL print "#{js_01 + ','+ ($2).to_s}" =begin 範囲指定のコメント =end