in reply to How to run bash file from perl
If output is extensive, but nevertheless nothing is expected to be printed to *nix channel 2, a pipe can be opened:my $output = `thing.sh args`;
If errors and output need separate processing (otherwise can append 2>&1 to the command in option 2), see IPC::Run3 or IPC::Open3, the latter of which takes three filehandles for channels 0 thru 2, the 0 channel needing therefore undef() instead of a filehandle, but otherwise is similar to option 2 above. Finally, if no I/O system communication is required with the process, just pass the commandline to be executed in bash (in this case the autoinvocation with arguments" to the "system" function as a single argument.my $pid = open my $ph, "thing.sh args |" or die $!; while ( <$ph> ) { # process output from thing.sh } close $ph; waitpid $pid, 0;
One world, one people
|
|---|