Ugh. Even under Windows, doesn't

$cmd =  "./psexec.exe //" . $server_name

work the same? Is there any need to use backslashes here?

On Mon, Dec 12, 2016 at 1:53 PM, Gilbert E. Detillieux <gedetil@cs.umanitoba.ca> wrote:
Yup, makes sense now...

After this line...

$cmd =  "./psexec.exe \\\\\\\\" . $server_name

... the cmd variable will contain "./psexec.exe \\\\server" (4 backslashes.  On running this line...

my $output = `$cmd`

... the shell will see "./psexec.exe \\\\server", and the command will see (after shell quote processing) argv[1] set to "\\server".

Each level of "\" escape processing requires that you double the number of "\" characters entered to get one through.  If you want to end up with 2, after 2 levels, you need 8.

Gilbert

On 12/12/2016 1:43 PM, Kevin McGregor wrote:
I should add that this gets run immediately after via

my $output = `$cmd`

if that makes any difference.

On Mon, Dec 12, 2016 at 1:40 PM, Kevin McGregor
<kevin.a.mcgregor@gmail.com <mailto:kevin.a.mcgregor@gmail.com>> wrote:

    I'm trying to decipher some Perl code which runs on a Windows
    server, and I ran into this:

    $cmd =  "./psexec.exe \\\\\\\\" . $server_name

    I think the idea is to end up with

    ./psexec.exe \\server

    but WTF eight backslashes? Does that make any sense? If so, can
    someone ELI5?

    Kevin

--
Gilbert E. Detillieux           E-mail: <gedetil@cs.umanitoba.ca>
Dept. of Computer Science       Web:    http://www.cs.umanitoba.ca/~gedetil/
University of Manitoba          Phone:  (204)474-8161
Winnipeg MB CANADA  R3T 2N2     Fax:    (204)474-7609
_______________________________________________
Roundtable mailing list
Roundtable@muug.ca
https://muug.ca/mailman/listinfo/roundtable