From: NAGAI Hidetoshi Date: 1998-04-16T17:57:28+09:00 Subject: [ruby-list:7580] Re: List on List 永井@知能.九工大です. >>>>> "W" == WATANABE Hirofumi writes: W> : ARGV.dup.each_with_index{|f,i|ARGV[i,1]=Dir[f]} W> :としてください.この .dup の追加とかなんとなくruby流ですね. W> ところが '*.zip' '*.gz' のように指定するとだめなんですよね. W> *.zip が 2 個以上あると *.gz は展開されません. 2 回で終わっ W> ちゃうから. あれ? 本当に試されました? うまく行くようですけど... ただし,dup 付きの場合は順序が違ってしまうし, dup なしの場合は一度展開したものをもう一度処理してしまうようですが. W> あと /[*?[]/ がないと存在しないファイル名だとなくなっちゃう W> のでこれも必要なんです. W> #ruby -r command -e cp old new のように使われる. でしたら, ARGV.each_with_index{|f,i| ARGV[i,1] = /[*?[]/ =~ f ? Dir[f]: f} でいいですよね? (参考) ============================================================ ruby> print `ls` lllllll.rb lllllll.rb~ sssss-test.rb sssss.rb z.rb nil ruby> x = ['l*', 's*', 'asdf', 'l*'] ["l*", "s*", "asdf", "l*"] ruby> x.each_with_index{|f,i| print "[#{i}] : #{f}\n"; x[i,1] = /[*?[]/ =~ f ? Dir[f]: f} [0] : l* [1] : lllllll.rb [2] : s* [3] : sssss.rb [4] : asdf [5] : l* [6] : lllllll.rb nil ruby> x ["lllllll.rb~", "lllllll.rb", "sssss.rb", "sssss-test.rb", "asdf", "lllllll.rb~", "lllllll.rb"] ruby> ============================================================ W> #one liner 大会じゃないんだから ;-) 御意.(^_^)