From: NAGAI Hidetoshi Date: 1998-05-15T17:15:21+09:00 Subject: [ruby-list:7919] Re: libwww-ruby 永井@知能.九工大です. >>>>> "M" == Yukihiro Matsumoto writes: M> まつもと ゆきひろです M> In message "[ruby-list:7888] Re: libwww-ruby" M> on 98/05/14, Mitsuru Ogino writes: M> |> Mac 上の httpd が URI の区切りと OS のパス区切りの面倒を見てい M> |> るように, ruby も中で面倒をみてあげて, script 上では「/」で統一 M> |> というのが嬉しいように思いますね. M> |そうなると「あるファイル 98/5/1」なんてファイル名を扱うときはどうなるんで M> |しょうか? M> ふむ.スクリプトの移植性とMacでの使い勝手との対立って感じで M> すかね.あんまり考えてなかったなあ. Mac のことは全く知らないので自信はないのですが, 以下のようなものではいかがでしょうか? スクリプト上でのパス区切りが何かは何らかの変数で指定できるとします. デフォルトでは '/' としておきます. スクリプト上と OS 上とでパス区切りが違うならば, open などの際に例えば ':' <-> '/' というように 指定ファイル名の変換をしてあげようというわけです. スクリプト上で想定しているパス区切り文字は, ファイル名の一部とはしないはずであるという考えが根底にあります. 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」に変換してアクセスされます. これにより,使い慣れた方のパス区切りでのファイル名指定で スクリプトを組め,一般的には可搬になると言えないでしょうか?(^_^; ただし,組み込み関数 system に渡す引数に付いてもこれを行うべきか, 行ってもよいのかは十分検討していないのでよくわかりません. # コマンド呼び出しを含む場合の可搬性はもともと低いので, # 最初から考える必要はないのかな??? これ以外に問題となるのは,スクリプトを読む際に スクリプト上のパス区切りを意識しないといけないことと, スクリプト上と実際に作成されるものとでファイル名が異なる点ですが, これらは可搬性向上のために目をつぶるということで.;;;^_^;;; なお,このファイル名変換はメソッドとしても用意しておき, ユーザからのファイル名入力を受け付ける際には このメソッドによってスクリプト上の形式に揃えるようにします. 可搬性を考えるなら,ユーザによるファイル名指定を受け取る際には このメソッドによるファイル名チェックを行うというわけです. -- 永井 秀利 (九工大 知能情報) nagai@ai.kyutech.ac.jp