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.
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
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’ to match filenames in a different
location. But ARGV 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’