How about RTFM? From perldoc -f close
If the file handle came from a piped open "close"
will additionally return false if one of the other
system calls involved fails or if the program
exits with non-zero status. (If the only problem
was that the program exited non-zero $! will be
set to 0.) Closing a pipe also waits for the pro-
cess executing on the pipe to complete, in case
you want to look at the output of the pipe after-
wards, and implicitly puts the exit status value
of that command into $?.