I want to pass in wildcard file names, and use it to match file names
located in different directories. For example, *.txt will  match file
such as "my.txt", "you.txt", etc.

However, I found out ruby intepreter automatically expands "*.txt"
command argument to a array of filenames which matches that wildcard in
the current directory.

For example:

C:\working>dir *.txt

05/10/2007 03:24 PM 46,101      config.txt
11/23/2004 11:54 AM 361           tips.txt
2 File(s) 46,462 bytes

If you do,

C:\working>ruby -e "puts ARGV" *.txt
config.txt
tips.txt

Ruby converts string *.txt into the matching filenames and pass in the
expanded array as the new argument.

This *nice* trick sometime creates trouble.

In my case, I want to use 'ARGV[0]' to match filenames in a different
location. But ARGV[0] is not "*.txt" as my expected. It was changed by
ruby. In fact, it is "config.txt" in this case.

One way to correct it is to always ask user to use single-quoted string:

C:\working>ruby -e "puts ARGV" '*.txt'
*.txt

-- 
Posted via http://www.ruby-forum.com/.