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