-j b- wrote: > I am trying to parse a string that is formatted with DOS-like file > names. > For instance: > > s = "a b c d \"C:\\user\\sub_dir\" \"C:\\user\\other_dir\"" > > When I use Shellwords.shellwords(s) however, I get the following: > > Shellwords.shellwords(s) > => ["a", "b", "c", "d", "C:usersub_dir", "C:userother_dir"] > > I have also tried Shellwords.escape(s) which yields: > > Shellwords.escape(s) > => "a\\ b\\ c\\ d\\ \\\"C:\\\\user\\\\sub_dir\\\"\\ > \\\"C:\\\\user\\\\other_dir\\\"" > > Which is not parsed correctly by shellwords (I get back a string rather > than an array). What I would like to do is is to preserve the > "C:\user\sub_dir" format and I am stumped on how to do so. I tried a > gsub on the string before sending it to shellwords but that seemed to > preserve nothing. Something similar to > > Shellwords.shellwords(s.gsub('\\', '\\\\\\')) > => ["a", "b", "c", "d", "C:usersub_dir", "C:userother_dir"] > > It might be of interest that Shellwords.shellwords(s) worked in my > version of 1.8.7. I just updated to the latest stable release (1.9.1) > and ran into this roadblock. > Searching the list logs turned up little. > Any suggestions? > > Thanks in advance. I don't have a solution, but I see the same malfunction moving from ruby 1.8.6 to ruby 1.9.1p243. r1test.rb: ======== require 'shellwords' s = "a b c d \"C:\\user\\sub_dir\" \"C:\\user\\other_dir\"" s = s.gsub('\\', '\\\\\\') p s p Shellwords.shellwords(s) ======== $ ruby -v ruby 1.8.6 (2007-03-13 patchlevel 0) [i686-darwin8.11.1] $ ruby r1test.rb "a b c d \"C:\\\\user\\\\sub_dir\" \"C:\\\\user\\\\other_dir\"" ["a", "b", "c", "d", "C:\\user\\sub_dir", "C:\\user\\other_dir"] $ ruby19 -v ruby 1.9.1p243 (2009-07-16 revision 24175) [i386-darwin8.11.1] $ ruby19 r1test.rb "a b c d \"C:\\\\user\\\\sub_dir\" \"C:\\\\user\\\\other_dir\"" ["a", "b", "c", "d", "C:usersub_dir", "C:userother_dir"] -- Posted via http://www.ruby-forum.com/.