C.DeRykus wrote:

Since you mention simplifying the code, do you actually
need IPC::Open3 ?  In your sample code, you're only
reading process output.

If you don't need IPC::Open3 complexity, you could just
use magic open to read output :

sub shell_run
{
     print "YYYY";
     my $pid = open( my $fh, qq{ @_ | } )  or die "open: $!";

Probably better as:

      my $pid = open my $fh, '-|', @_ or die "open: $!";

And you don't use $pid anywhere so why create it?

     print for<$fh>;

Probably better as:

      print while <$fh>;

     close $fh  or die "close: ", $? || $!;

Probably better as:

      close $fh or die $! ? "Error closing pipe: $!"
                          : "Exit status $? from $_[0]";

     print "ZZZZ";
}
trap { shell_run( 'perl', '-E', '"print \'TEXT IN\'"' ) };
is( $trap->stdout, "YYYYTEXT INZZZZ");
done_testing();



John
--
Any intelligent fool can make things bigger and
more complex... It takes a touch of genius -
and a lot of courage to move in the opposite
direction.                   -- Albert Einstein

--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to