Michael Weber wrote:
Greetings!

I am not completely understanding how perl parses quotes.

Here is the line I want to execute:

    exec "$command $cmd_msg";

The variable $command is an executable shell script "test.sh"

The problem comes in the $cmd_msg variable.

This contains a line from my log file:

    Nov 13 11:54:31 fw-3 sshd(pam_unix)[19906]: authentication failure; 
logname= uid=0 euid=0 tty=ssh ruser= rhost=82-148-208-172.fiber.unet.nl

The shell script blow up on the parenthesis:

    sh: -c: line 0: syntax error near unexpected token `('

How can I quote the exec line above so what gets passed to /bin/sh is the log 
file line contained in double quotes?

Simplistic, but possibly risky:

   exec qq[$command "$cmd_msg"];

Much better, IMO:

   exec "$command \Q$cmd_msg";

Or even better, bypass the shell by using the list form of exec():

   exec $command, $cmd_msg;

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to