Re: Automation: (Was: List of Command Line Tools) - Hijacked…

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Al Tobey
Date:  
To: Main PLUG discussion list
Subject: Re: Automation: (Was: List of Command Line Tools) - Hijacked from PGP
On Sun, May 17, 2009 at 6:39 AM, Bryan O'Neal
<> wrote:
> Great list. I would also add scp (secure copy) ps aux (list of currently
> running processes) and I also like any app that has a command line function,
> like xmms.
>
> While we are on the subject, excluding writing everything in bash, what is
> the best way for various programs (pick your language) to access command
> line tools and parse the output?  I would like to crank my automation
> techniques up a level.


In perl,

use strict;
use warnings;

# pipe at the end of the open string means run the program and grab its stdout
# pipe at the beginning means let me print to its stdin
# see perldoc -f open
# see perldoc IPC::Open2 for how to do both sides
open( my $fh, '/usr/bin/foo |' )
    or die "Could not execute foo: $!";


while ( my $line = <$fh> ) {
    chomp($line); # kill whatever newline/carriage return may be there
     # process it ...
}


close $fh; # optional, but good style

The old standards are still good too, just not as elegant (most of the time).

my @output = `/usr/bin/foo`;
system( '/usr/bin/foo' );

Also check out http://search.cpan.org/~rcaputo/POE-1.005/lib/POE/Wheel/Run.pm

POE takes a bit to learn, but it's really worth it when you have a
single process managing hundreds of tasks without threading or fork.
Python's twisted framework should have something similar and work
similarly, but would be more likely to appease the language snobs.

-Al
---------------------------------------------------
PLUG-discuss mailing list -
To subscribe, unsubscribe, or to change your mail settings:
http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss