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/