in reply to How to execute multiple commands through perl script

Continuing on this topic, is it possible to run the commands on separate lines in the newly opened command prompt?

So my perl script needs to open a new command prompt and in that, connect to some server (I have a script that connects to the server) and wait for connection to be done before execution of next command. This is what I am currently doing:

my $cmd1 = "python Pyscript.py server=server_name.com"; system(qq{start cmd /k "cd c:\\PerlExamples && $cmd1 && test=$test_nam +e,$file_name"});

$test_name and $file_name are previously defined. Execution of this script paths to my directory and connects to my server but doesn't execute the test part. When I try to manually enter these commands in a command prompt window, it works if I have them on separate lines only. Is it possible to do this from perl?

Replies are listed 'Best First'.
Re^2: How to execute multiple commands through perl script
by choroba (Cardinal) on Oct 05, 2016 at 08:48 UTC
    Please, show the separate lines you used. Was it
    cd c:\\PerlExamples python Pyscript.py server=server_name.com test=$test_name,$file_name

    The last line really seems weird. Or do you want to use the last two lines as one line only? Then drop the && after $cmd1 .

    ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,

      I need to use the last line test=... on a separate line after the python Pyscript... line has executed. This is what I need to do

      cd c:\\PerlExamples && python Pyscript.py server=server_name.com #The above part can be in one or two lines - it doesn't matter test=$test_name,$file_name #This has to be on separate line

      I suppose my question is, is there a way for me to give carriage return in this system... command?

        Use a piped-open like this:

        my $pid = open CMD, '| cmd /k' or die $!; print CMD 'cd c:\PerlExamples'; print CMD 'python Pyscript.py server=server_name.com'; print CMD 'test=$test_name,$file_name'; ...

        With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority". I knew I was on the right track :)
        In the absence of evidence, opinion is indistinguishable from prejudice.
        | cmd /k