Running a batch file from Perl (Activestate perl in Windows)

Jithesh picture Jithesh · May 25, 2010 · Viewed 17.5k times · Source

I have a Perl program which does something like below:

#!/usr/bin/env perl    
use strict;
use warnings;

my $exe = "C:\\project\\set_env_and_run.bat";

my $arg1 = "\\\\Server\\share\\folder1";    
my $arg2 = "D:\\output\\folder1";

my $cmd = "$exe \"$arg1\" \"$arg2\"";    
my $status = system("$cmd > c:\\tmp\\out.txt 2>&1");

print "$status\n";

I am calling this Perl code in an eval block. When invoked, i get the status printed as 0, but the batch file has not actually executed. What would be the reason for this? Any issue with the 'system' call coded above?

Thanks, Jits

Answer

mob picture mob · May 25, 2010

You need to escape your backslashes inside of double quotes.

my $exe = "C:\\project\\set_env_and_run.bat";
...
my $status = system("$cmd > c:\\tmp\\out.txt 2>&1");