青山です。 In message <199805150814.RAA02813 / dumbo.ai.kyutech.ac.jp>, NAGAI Hidetoshi writ es: > >Mac 上で「foo:98/5/1」(ってディレクトリ foo のファイル 98/5/1 >ということでいいのですよね?(^_^; ) については, >スクリプト上でのパス区切りを '/' とするのであれば, >スクリプト上では「foo/98:5:1」として指定します. >これに対し,OS 上のパス区切りが ':' であれば, >ファイルアクセスの際に,内部的に「foo:98/5/1」に変換します. >逆にスクリプト上でのパス区切りを ':' と指定すれば, >スクリプト上では Mac 的に「foo:98/5/1」と書け, >UNIX 系では「foo/98:5:1」に変換してアクセスされます. Mac のファイルサーバーにする時に使われている cap, netatalk がとってい る方法ですね。実際には : 以外はなんでもありという自由度の高さから、も う一工夫されています。/ <---> :2f こんな感じです。 NT ではこのようなファイル名の工夫をせず、NT 側で無効な文字は - に置き 換え、各ファイルの本来の名前やリソースの情報を別な所で一括管理するとい う方法を取っています。(つまり、一方通行) やはり見やすい文字列としての相互変換は難しいでしょうね。とりあえず現状 では require "a/b" が使われるようになると Mac 側ではその扱いが難しいと 思われます。require "a" + File::Separator + "b" とでも書くようにしない と... ということで、ちょっと後向きではありますが、現状では、スクリプト中には ディレクトリの指定を埋め込まず、埋め込む場合には File::Separator を使 用するというのが安全策でしょうか。 しかし、いちいち File::Separator を使用するのも面倒ですから、もう少し 工夫するとしたら、セパレータを隠して(NT 方式?) ["a", "b"] のようにす るという手もあるでしょうか。 青山 和光 Wakou Aoyama <wakou / fsinet.or.jp>