in reply to Passing user input to a shell command

You should not be using qw in the system call. Take it out.

Try this, to see why:

print "$_\n" for qw "perl /Users/james/perlstuff/macc/macc1 $file";

You might have other problems with that program as well.
For starters, you should probably chomp($file) immediately after reading it in.
Also, you're opening the file for reading, then immediately passing the filename to an external program. I really don't think you want to do both. You certainly don't need to open a file before passing it to an external program; that program will do what it wants with the name, and wouldn't see your open filehandle anyway.
Thirdly, you're pulling in the Shell module, but not using it. You could use it, by doing this:

use Shell qw( perl ); . . . perl "/Users/james/perlstuff/macc/macc1", $file;
A word spoken in Mind will reach its own level, in the objective world, by its own weight

Replies are listed 'Best First'.
Re^2: Passing user input to a shell command
by james734 (Initiate) on May 17, 2007 at 22:06 UTC
    I know that the file $file does not exist, I open it to insure that user is typing the file exists. The question should have been how do I tell the shell line that $file = <STDIN> is the value that is entered by the user and to put it into the shell line ie User enters test.txt So $file is now = test.txt the shell command shout be perl /Users/james/perlstuff/macc/macc1 test.txt. James
      I open it to insure that user is typing the file exists

      Opening it is not the best way to do that. There are the file test operators, such as -f:

      -f $file or die "You specified a non-existent file.\n";

      Even if you do open it for this purpose, you should definitely close it right away, before letting another process have it.

      A word spoken in Mind will reach its own level, in the objective world, by its own weight
    A reply falls below the community's threshold of quality. You may see it by logging in.
Re^2: Passing user input to a shell command
by adrianh (Chancellor) on May 20, 2007 at 16:21 UTC
    You should not be using qw in the system call

    Or, you should be using qw() but you need to fully specify the path to perl. That way you don't have to worry about $file having spaces in it.

      Did you try this?

      print "$_\n" for qw "perl /Users/james/perlstuff/macc/macc1 $file";