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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.