たむらです。
藤岡和夫 <kazuf@...> wrote:
> RubyもPerlと同じようにお呪いがあるようです。下記のようなスクリプトはど
> のように動作するのでしょうか。一部ですけど、、、、、
>
> if $0 == __FILE__
> require 'uconv'
> print Uconv.u8tosjis(parse $<.read)
> end
>
> $0 == __FILE__
>
> って当たり前では???
__FILE__ には確実に記述されてるスクリプト自体の名前になりますけど
、$0 は、実行されてるスクリプトのファイル名になります。
つまり、
[foo1.rb]
def bar
printf "$0=%s, __FILE__=%s\n", $0, __FILE__
end
public :bar
bar
[foo2.rb]
require 'foo1.rb'
ていう2つを作って実行すると
$ ruby foo1.rb
$0=foo1.rb, __FILE__=foo1.rb
$ ruby foo2.rb
$0=foo2.rb, __FILE__=./foo1.rb
となります。
# って、わたなべさんに先越されてしまった (^^;
Perl も同じく、ライブラリ・モジュールのセルフテスト用って感じ。
tDiary はじめました。 http://tamura.tdiary.net
たむら mailto:sgs02516@...