M
Michael Jia
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
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