http://www.perlmonks.org?node_id=1016290


in reply to Command line argument Error..

khjayantasingh:

It sounds like your command shell is mangling the arguments for you (most do in one way or another).

Most shells will try to expand the argument list for you when they see a wildcard. Putting quotes around the arguments tells the shell to pass the argument to the script as written. Example:

$ perl t.pl t* t.100, t.100.md5, t.10.md5, t.pl $ perl t.pl 't*' t* $ cat t.pl use strict; use warnings; print join(", ", @ARGV),"\n";

In the first run, perl didn't get t*, the shell expanded t* to a list of all matching files and gave that list to the perl script. For the second run, I quoted the argument, so perl actually sees t*.

I'd go further, but your question is somewhat difficult for me to interpret: "but problem is I cannot use like this in my script". I can't tell what's giving you a problem from this point. Care to elaborate?

...roboticus

When your only tool is a hammer, all problems look like your thumb.