in reply to Using System command

Currently I am using
my $cmd = "cd C:\\ABC\\"; $cmd .= "pdftotext -layout R1.pdf"; system($cmd);

And the Error i am getting is ---System cannot get the specifies path.

Replies are listed 'Best First'.
Re^2: Using System command
by Discipulus (Canon) on Oct 04, 2016 at 08:07 UTC
    I suspect that if you print your $cmd you'll see why:

    cd C:\\ABC\\pdftotext -layout R1.pdf

    Probably is not what you want to execute.

    Perl has a builtin to change directory: chdir

    In the command line, two commands have to been concatenated with & or && (NB: the latter && only execute the second command if the previous was succesfull ms odcs)

    See a more userfriendly explaination at ss64.com for details.

    L*

    There are no rules, there are no thumbs..
    Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.

      Tried the below code

      my $cmd = "cd C:\\ABC\\"; my $cmd1 = "pdftotext -layout R1.pdf"; system($cmd&&$cmd1);

      But the error this time is "'pdftotext' is not recognized as an internal or external command, operable program or batch file"

        What is the following code supposed to mean?

        system($cmd&&$cmd1);

        Maybe you wanted something like:

        my $real_command = "$cmd && $cmd1"; warn "Running [$real_command]"; system($real_command) == 0 or die "Couldn't launch [$real_command]: $? / $!";

        Observe the difference between

        my $real_command = "$cmd && $cmd1"; print $real_command; # and my $real_command = $cmd && $cmd1; print $real_command;
        Wait, the && here is the shell operator, not the Perl one, so it should be

        0 == system "$cmd && $cmd1" or die "Error: $?";
        As $cmd was true, the result of $cmd && $cmd1 in Perl was just $cmd .

        ($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,
Re^2: Using System command
by Athanasius (Archbishop) on Oct 04, 2016 at 07:51 UTC

    Hello 9mohit2,

    If you want to run two system commands like this, you either need to run them separately:

    system('cd C:\\ABC\\'); system('pdftotext -layout R1.pdf');

    or else combine them using a syntax recognised by the command prompt. For example, this works for me on Windows:

    perl -wE "system('cd .. & dir');" # Note: ^

    But there’s no need to use system to change the current working directory; use Perl’s built-in chdir function.

    Hope that helps,

    Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

      > run them separately

      Would it help in this case? The cd in the first system wouldn't change the current directory for the script, only for the fork, so the next system would run in the previous directory. Or is cd global on Windows?

      ($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,