Hi All,

I have been using the heck out of this pm6, so
I though other wold like it too.

Here is the most miserable code I have run at it so far
(this guy has to be run from his own directory):

<code.
   my $CimTrakVersion;
   my $ReturnCode;
   ( $CimTrakVersion, $ReturnCode ) = RunNoShell(
'bash -c "cd /opt/Cimcor/CimTrak/CimTrakServer; ./CimTrakServer.exe --version 2>&1 | grep -i Build"' );
</code>

RunNoShell.pm6
<code>
#!/usr/bin/env perl6
# RunNoShell.pm6


sub RunNoShell ( $RunString ) is export {

   #`{ run a system command without a shell.
       Enter the command as a sting.  Use quotes around items that
       are meant to be grouped together ("Program Files", etc.)

       Results are returned as a dual pair:
           a string with the results of the command, and
           the return code (note: bash 0=success)
   }

   # place each value into a cell in an array.  Keep quoted
   # values together
   my @RunArray  = $RunString ~~ m:global/ [ '"' <-[ " ]> * '"' | \S+ ] /;

   # shells remove the quote, so you have to here as well
   for @RunArray.kv -> $index, $value { @RunArray[$index] ~~ s:g/\"//; };
# for @RunArray.kv -> $index, $value { say "\$RunArray[$index] = <$value>"; }; print "\n";

   my $proc      = run( @RunArray, :out );
   my $ReturnStr = $proc.out.slurp-rest;
   my $RtnCode   = $proc.status;

   return ( $ReturnStr, $RtnCode );
}
</code>

Reply via email to