Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine

Re: How to run bash file from perl

by SimonClinch (Deacon)
on May 17, 2011 at 15:02 UTC ( #905291=note: print w/replies, xml ) Need Help??

in reply to How to run bash file from perl

There are plenty of ways to do this. The easiest if errors and warnings can be ruled out and the output is small is the backtick operator which is also a similar operator in bash:
my $output = ` args`;
If output is extensive, but nevertheless nothing is expected to be printed to *nix channel 2, a pipe can be opened:
my $pid = open my $ph, " args |" or die $!; while ( <$ph> ) { # process output from } close $ph; waitpid $pid, 0;
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.

One world, one people

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://905291]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (4)
As of 2016-12-04 13:08 GMT
Find Nodes?
    Voting Booth?
    On a regular basis, I'm most likely to spy upon:

    Results (65 votes). Check out past polls.