I think it has something to do with the double quotes
Yes, and with your shell. As a rule of thumb, you need to quote one-liners with double quotes on Windows, and with single quotes on Unix systems including Linux, *BSD, Mac OS X and the cygwin shell.
If you use double quotes on Unix, the shell interpolates the quoted string, and because you rarely have an environment variable named "csv", each "$csv" is replaced with an empty string.
This does not happen on Windows with command.com and cmd.exe, because their quoting rules are, um, different. Strange may be a better word, bug-compatible back to MS-DOS 1.0 describes what actually happens.
And don't forget that Windows does not expand wildcards for you. This is not a problem with this one-liner, but often you want to use Win32::Autoglob:
X:\>perl -E "say for @ARGV" *.exe
*.exe
X:\>perl -MWin32::Autoglob -E "say for @ARGV" *.exe
cksum.exe
cp.exe
cut.exe
date.exe
sort.exe
sum.exe
X:\>
Alexander
--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)
|