O'Reilly logo

Learning Perl, Second Edition by Randal L. Schwartz, Tom Christiansen

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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 10.4. 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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required