in reply to Re^2: Capture external program return value
in thread Capture external program return value

my $result = `blastall -i foo -o bar -p blastx -d baz`; die("Could not execute blastall: $!\n") if !defined($result); die("Died from signal ", ($? & 127), "\n") if $? & 127; die("Exited with error ", ($? >> 8), "\n") if $? >> 8;

Replies are listed 'Best First'.
Re^4: Capture external program return value
by Anonymous Monk on May 02, 2010 at 16:51 UTC
    I think that could be simplified to
    use IPC::System::Simple qw( capture ); my $result = capture('blastall -i foo -o bar -p blastx -d baz');
      Indeed. And since IPC::System::Simple gives access to the list form for exec, might as well use it to save us from creating shell literals from the args.
      use IPC::System::Simple qw( capture ); my $result = capture( blastall => ( -p => 'blastx', -d => $baz, -i => $foo, -o => $bar, ) );

      But looking at what those args are, it seems to me that it makes no sense to use backticks, capture or capturex with -o. system (or IPC::System::Simple's version) would be more appropriate.