my $pid = open my $rdr, "$cmd |" or die "unable to run external command: $!"; while (<$rdr>) { ... } close $rdr or die "reading from $rdr failed: $!"; #### my $pid = open my $rdr, '-|', $cmd, @args or die "unable to run external command: $!"; while (<$rdr>) { ... } close $rdr or die "reading from $rdr failed: $!";