See perlopentut for a kinder, gentler explanation of opening files. You can't usually use either read-write mode for updating textfiles, since they have variable length records. See the -i switch in perlrun for a better approach. The file is created with permissions of 0666 modified by the process' umask value.
Open returns nonzero upon success, the undefined value otherwise.
If the open involved a pipe, the return value happens to be the pid of the subprocess. The key distinction between systems that need binmode and those that don't is their text file formats. The rest need it. When opening a file, it's usually a bad idea to continue normal execution if the request failed, so open is frequently used in connection with die . The infrequent exception is when working with an unopened filehandle is actually what you want to do.