my @args = ("command", "arg1", "arg2");
system(@args) == 0
or die "system @args failed: $?";
Have you tried something similar? (Not Recommended)
my @args = qw(Runbatch.exe -j dpsgl -r dpstst);
system(@args) == 0
or die "system @args failed: $?";
Have you tried something similar? (Recommended)
my @args = ('Runbatch.exe', '-j', 'dpsgl', '-r', 'dpstst');
system(@args) == 0
or die "system @args failed: $?";
If there is an error on the command it will be printed through the die command.
Also for general information fellow Monk haukex has written a very interesting tutorial Re: curl without backticks and system() (updated x2).
Update: I forgot to add the reason that why my proposed solution I believe it will work for your case. Sample below:
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @args = ('Runbatch.exe -j dpsgl -r dpstst');
my @argsUpdated = qw(Runbatch.exe -j dpsgl -r dpstst);
print Dumper \@args, \@argsUpdated;
__END__
$ perl test.pl
$VAR1 = [
'Runbatch.exe -j dpsgl -r dpstst'
];
$VAR2 = [
'Runbatch.exe',
'-j',
'dpsgl',
'-r',
'dpstst'
];
Update 2: Based on useful links that haukex and afoken provided the system command that I presented above it looks to have the same affect as a single quote (string). So proposed solution if you wish to use system would be like this (see below):
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @args = ('Runbatch.exe -j dpsgl -r dpstst');
my @argsUpdated = ('Runbatch.exe', '-j', 'dpsgl', '-r', 'dpstst');
print Dumper \@args, \@argsUpdated;
__END__
$ perl test.pl
$VAR1 = [
'Runbatch.exe -j dpsgl -r dpstst'
];
$VAR2 = [
'Runbatch.exe',
'-j',
'dpsgl',
'-r',
'dpstst'
];
Where you explicitly define the list of commands.
Hope this helps, BR.
Seeking for Perl wisdom...on the process of learning...not there...yet!
|