Hi,
you would only use the pipe if there was some command that produces some output that you want to catch (e.g. open(CMD, 'ls -l |')). If you only want to open a file for reading, you shouldn't use the pipe operator. See open for details.
Regards,
svenXY
No, it's not right. It means that a process is forked for that command and that the output of that command, i.e. what that it will inject into STDOUT is returned to you when you read from the opened filehandle, as if it were the content of an actual file.