作者: Bruce.
日時: 2006/10/20(23:15)
Bruce.です。

Bunta さんは書きました (2006/10/20 21:27):
>> Rubyならsjisなスクリプトでも動かせます。
>> #!ruby -Ks
>> と書けばいいだけ。
> 
>  これ、command.comやcmd.exeも解釈してくれますか? まったくよく分かって
> ないのですが、 #!/nato/kakan/toka/perlって、シェルが解釈してるんじゃない
> でしたっけ。(何か下品なしゃべり方してるなぁ、失礼しました)
>  僕はMS-DOSとWindowsXP環境なのです。 いえいえ、UNIX的にしようという野
> 望は今のところありません。ATOK8が使えないと大変ですから(おぃ)

確かにファイルの先頭の#! (shebang)行は確かにシェルが解釈して
起動する処理系を決定するのに使われますが、

 The #! line is always examined for switches as the line is being parsed.
 Thus, if you're on a machine that allows only one argument with the #!
 line, or worse, doesn't even recognize the #! line, you still can get
 consistent switch behavior regardless of how Perl was invoked, even if
 -x was used to find the beginning of the program.

というルールがありますので、起動された側でもオプションの解析を
するためにその行を解釈するということです。これは perlのドキュメント
(perlrun)からの引用ですが、Rubyも同様のルールで動作します。
#Pythonは知らない

ですから、

#!ruby -Ks
puts "一覧表"

という sample.rb があったとして、

ruby sample.rb

と起動してもちゃんとオプションは有効になってくれます。

>> # 日本人が作者だけに日本語のことを考えてくれています。
> 
>  これは結局大きな魅力ですよね。

ただしホームグラウンドがWindowsでないので、Windowsで使うときに
たまに落とし穴があったりします。開発バージョン(1.9)では解決
していたりする場合もあるのですが。

もっとも同様の落とし穴はPerlにもあるのでRubyだから悪いという
ことでは決してありません。


-- 
木村浩一
  I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
  mail kbk@...
	web  www.kt.rim.or.jp/~kbk/index.html#zakkicho
	     homepage3.nifty.com/farstar/