Re: system()
[email protected] ("John W. Krahn")
| Newsgroups | perl.beginners |
|---|---|
| Message-ID | <[email protected]> |
schms wrote:
> I am trying to run the following system() command. It seems as Perl is
> not able to handover $POLICYNAME
> to the Unix shell
It *looks* like you are trying to hand over $POLICYNAME to
/usr/openv/netbackup/bin/admincmd/bpplinfo and not to the shell.
Whether or not system() invokes a shell to run your command depends on
the presence of shell meta-characters and/or the version of Perl that
you are running.
> and that the shell gets a problem with the strings -
> modify and -inactive as they contain a minus (-). Is there a way to
> run the command
On the command line you would put -- just after the command to indicate
that everything following are not switches.
> /usr/openv/netbackup/bin/admincmd/bpplinfo $POLICYNAME -modify -
> inactive
>
> from a Perl script ?
>
>
> (..)
>
> open(RDME, "$COMMAND |") or die "Error in: $!\n";
open RDME, '-|', $COMMAND or die "Error in '$COMMAND' $!\n";
> while (<RDME>) {
> my $POLICYNAME = $_;
while ( my $POLICYNAME = <RDME> ) {
chomp $POLICYNAME;
> my @args = ("/usr/openv/netbackup/bin/admincmd/bpplinfo
> $POLICYNAME -modify -inactive");
> system(@args);
my @args = ( '/usr/openv/netbackup/bin/admincmd/bpplinfo',
$POLICYNAME, '-modify', '-inactive' );
0 == system @args or die "system @args failed: $?";
> }
>
> close(RDME);
close RDME
or warn $! ? "Error closing '$COMMAND' pipe: $!"
: "Exit status $? from '$COMMAND'";
John
--
Perl isn't a toolbox, but a small machine shop where you
can special-order certain sorts of tools at low cost and
in short order. -- Larry Wall