What happens if you try to open a pipe to or from a non-existent com- mand? If possible, Perl will detect the failure and set $! as usual. But if the command contains special shell characters, such as ">" or "*", called 'metacharacters', Perl does not execute the command directly. Instead, Perl runs the shell, which then tries to run the command. This means that it's the shell that gets the error indica- tion. In such a case, the "open" call will only indicate failure if Perl can't even run the shell. See "How can I capture STDERR from an external command?" in perlfaq8 to see how to cope with this. There's also an explanation in perlipc.