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

I have a .batch file that already is executing Perl code. I can provide more details on this if needed, but since I don't know Perl I'm not sure what else to say about it. This batch file has Perl functions in it. In one of them I want to call a batch file that I created. I try this:

system("c:\myfolder\my.bat");

Now the Perl code is executing on a different drive, which is why I specify C:. Could this be a problem?

Replies are listed 'Best First'.
Re: why isn't bat file getting called?
by Anonymous Monk on May 02, 2012 at 18:33 UTC
    Backslash has a special meaning in quoted strings. Use forward slash instead, or escape the special meaning of backslashes by applying backslashes.
    system("c:/myfolder/my.bat"); system("c:\\myfolder\\my.bat");

      Oh, thanks. That was it!

Re: why isn't bat file getting called?
by AnomalousMonk (Archbishop) on May 03, 2012 at 00:44 UTC

    If you are new to Perl, do yourself a favor and always enable warnings and strictures at the start of your code, then do youself another favor and use diagnostics:
        use warnings;
        use strict;
        use diagnostics;

    >perl -le "use warnings; use strict; my $s = \"c:\myfolder\my.bat\"; print qq{'$s'}; " Unrecognized escape \m passed through at -e line 1. Unrecognized escape \m passed through at -e line 1. 'c:myfoldermy.bat' >perl -le "use warnings; use strict; use diagnostics; my $s = \"c:\myfolder\my.bat\"; print qq{'$s'}; " Unrecognized escape \m passed through at -e line 1 (#1) (W misc) You used a backslash-character combination which is not recognized by Perl. The character was understood literally, but t +his may change in a future version of Perl. 'c:myfoldermy.bat'