#!/usr/bin/perl -w # Note: the 'die' on the next line will probably never trigger open PH, "ps -ef|" or die "$!: opening pipe"; # your snippet was missing this loop: while () { print; # or whatever ... } # Note that for pipes, most errors will come when you try to close it, so # if the command line had a problem, you'd see this 'die' trigger, not # the one on the 'open' close PH or die "$!: opening pipe";