[Chapter 10] 10.2 Opening and Closing a Filehandle
Author: Randal Schwartz, Tom Christiansen & Larry Wall
Date: 1999-07-02T01:33:56Z

#

| Chapter 10 Filehandles and File Tests |

## 10.2 Opening and Closing a Filehandle

Perl provides three filehandles, `STDIN`, `STDOUT`, and `STDERR`, which are automatically open to files or devices established by the program's parent process (probably the shell). You use the `open` function to open additional filehandles. The syntax looks like this:

    open(FILEHANDLE,"somename");

where `FILEHANDLE` is the new filehandle and `somename` is the external filename (such as a file or a device) that will be associated with the new filehandle. This invocation opens the filehandle for reading. To open a file for writing, use the same `open` function, but prefix the filename with a greater-than sign (as in the shell):

    open(OUT, ">outfile");

We'll see how to use this filehandle in the upcoming section "Using Filehandles." Also, as in the shell, you can open a file for appending by using two greater-than signs for a prefix, as in:

    open(LOGFILE, ">>mylogfile");

All forms of `open` return true for success and false for failure. (Opening a file for input fails, for example, if the file is not there or cannot be accessed because of permissions; opening a file for output fails if the file is write-protected, or if the directory is not writable or accessible.)

When you are finished with a filehandle, you may close it with the `close` operator, like so:

    close(LOGFILE);

Reopening a filehandle also closes the previously open file automatically, as does exiting the program. Because of this, many Perl programs don't bother with `close`. But it's there if you want to be tidy or make sure that all of the data is flushed out sometime earlier than program termination. A `close` call could also fail if the disk filled up, the remote server that held the file became inaccessible, or any of various other esoteric problems occurred. It's a good idea to check the return values of all system calls.

10.1 What Is a Filehandle? |  | 10.3 A Slight Diversion: die