ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文

  メンテナンス 前画面に戻る

対象スレッド 件名: Ruby : PHP や Perl が解る人がとにかく Ruby
名前: lightbox
処理選択
パスワード

件名 Ruby : PHP や Perl が解る人がとにかく Ruby
名前 lightbox
コメント
  [[前提条件]]
@DIV
実行環境 : さくらインターネット
キャラクタセット : UTF-8
テキスト改行コード : LF
@END

@DIV
#!/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
@END

	Ruby が出力する実行中のエラーメッセージは標準エラー出力に出力されるので
	デフォルトでは[[エラーが出てもどの行で何が起こったか全く解りません]]。
	
	PHP でも設定でエラーメッセージを出無いようにはできますが、通常、複雑なWEB
	アプリを作成することを前提としているので、デフォルトではエラーメッセージが
	出力されるようになっているはずです。
	
	また、PHP は実行環境の設定は、[[php.ini]] を変更するか、設定用の関数を実行する
	事になっています。ですが、Ruby はその関係の情報が特別に整理されていない上に、
	元々あまり考慮されていないようです。
	
	
	Ruby は名前からしても、Perl に近い書式が多く見受けられます。これは、PHP から
	入ったプログラマにはとても解りにくい結果を招きます。Perl でコードを書いてた
	プログラマが想像の付く事柄も、PHP で慣れてしまっているとファイルのパーミッシ
	ョンでさえ設定するのを忘れる程です
	
	ヒアドキュメントは PHP にもありますが、Perl ではそれしか無かった為に WEB
	アプリケーションにおける表現の最前線の場を PHP に完全に奪われてしまいました。
	もちろんセッションが無かった事も大きかったですが、そういう意味で言うと Ruby
	は中途半端な構成だと感じます。今の時代で、アプリケーション開発を目的とした
	場合、Perl と比べるのは特別な事情を除けばナンセンスですし、PHP とは全く
	違ったものである以上、用途ははっきり分化されると思います
	
	ただ、Perl が難解で複雑な印象であるのに対して、Ruby は容易に目的を達成できる
	という印象があります。それは、後発の強みかどうかは解りませんが、[[Mechanize]] 
	を使った WEB ページへの直接アクセスは今の時代に非常にマッチした手段を提供して
	くれている気がします