From: matz@... (Yukihiro Matsumoto) Date: 1997-01-30T11:28:17+09:00 Subject: [ruby-list:1954] Re: open (file descriptor) まつもと ゆきひろです. In message "[ruby-list:1953] open (file descriptor)" on 97/01/30, Jun Kuroda writes: |黒田です. | |perl で, | |open(OUT, ">&$outFd"); # $outFd, $inFd は file descriptor |open(IN, "<&$inFd"); | |こういうのを ruby で実現できますか? 私,perl使いじゃないんでよく分からないんですけど,これってC におけるdup2()のようなものですかね.OUTの出力先をoutFDに切替 えるというような? できれば一度オープンしたIOのつながり先を変更するようなことは しないで,変数の値を変えた方が良いと思いますが,なんかの都合 で「どーーーしても」そうしなければならないのなら, IO#reopen(otherIO) File#reopen(path, mode) があります.なんでこれを使って欲しくないかというと * 作ったは良いがこんなものはあってはいけないのではないかと 思っている * change classをするなどかなり邪道なメソッドである からです.また将来予告なく仕様が変更される可能性があります. # なくなるかも. |それと, splice の代用を | |@outFd, @inFd, @fvwmRcfile, hwinId, @fvwmContxt = ARGV.join('*').split(/\*/) | |とかしたんですが, もっとかっこ良いのがあれば教えて下さい. perlのspliceってこんな機能がありましたっけ? 無知だなあ. 目的がちょっと不明なのですが,やりたいことは @outFd, @inFd, @fvwmRcfile, hwinId, @fvwmContxt = ARGV あるいは @outFd, @inFd, @fvwmRcfile, hwinId, *@fvwmContxt = ARGV ではだめなんですか? それぞれ動作が違います.前者はあまりは切 捨て,後者はあまりは配列に格納します. # なんでjoinしてからsplitしているんだろう? まつもと ゆきひろ /:|)