in reply to why isn't bat file getting called?

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'