You can't usually use either read-write mode for updating textfiles, since they have variable length records. See the -i switch in the perlrun manpage for a better approach. The prefix and the filename may be separated with spaces.
Open returns nonzero upon success, the undefined value otherwise.
The rest need it. The infrequent exception is when working with an unopened filehandle is actually what you want to do. The mode you specify should match the mode of the original filehandle. Typically this is used like the normal piped open when you want to exercise more control over just how the pipe command gets executed, such as when you are running setuid, and don't want to have to scan shell commands for metacharacters. The filename passed to open will have leading and trailing whitespace deleted, and the normal redirection characters honored.