作者: TAMURA.KENICHI
日時: 2002/2/11(00:29)
たむらです。

藤岡和夫 <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@...