Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hello Monks,

I am trying to use the exec function. I understand that in the exec function, exec LIST means the exec command is followed by the process to start. If my process has more than one arguments, should I separate each argument with a comma like below?

If I type in my command line: myProcess argument1 argument2 argument3 Then to do the same thing as an exec will be: exec "myProcess.exe", "argument1", "argument2", "argument3";

Thanks

Replies are listed 'Best First'.
Re: Exec function arguments
by borisz (Canon) on Jan 07, 2005 at 00:56 UTC
    Yes. Sometimes I use qw. But a comma seprated list is fine.
    exec qw(/bin/ls -l);
    Boris
Re: Exec function arguments
by revdiablo (Prior) on Jan 07, 2005 at 02:03 UTC

    This is more a question of Perl's syntax than a question about exec in particular. You can use any standard Perl method to construct a list, and pass that list to exec. What you have is a very reasonable method of doing that. borisz provided another example, and here are a few more:

    my @args = ("arg1", "arg2", "arg3"); exec "myProcess.exe", @args; # array will be smashed into a list my %args = ( --arg1 => 'val1', --arg2 => 'val2', --arg3 => 'val3', ); exec "myProcess.exe", %args; # hash will be smashed into a list my @args = qw(arg1 arg2 arg3); # a bit of syntax sugar exec "myProcess.exe", map { "--$_ 'foo'" } @args; # map returns a list

    As you can see, there are many ways to make lists in Perl. Which one you pick depends on the situation, but, like I said, the example you've shown is very reasonable.