Earlier, we showed you how to open a filehandle for output. Normally, that creates a new file, wiping out any existing file with the same name. Perhaps you want to check that there isn’t a file by that name. Perhaps you need to know how old a given file is. Or perhaps you want to go through a list of files to find which ones are larger than a certain number of bytes and have not been accessed for a certain amount of time. Perl has a complete set of tests you can use to find out information about files.
Perl has a set of file test operators that let you get
particular information about files. They all take the form of
-X, where the
X represents the particular test (and there is
-X file test operator too,
to confuse things a bit). In most cases, these operators return true or
false. Although we call these things operators, you’ll find their
documentation in perlfunc.
Before you start a program that creates a new file, you might want
to ensure that the file doesn’t already exist so that you don’t
accidentally overwrite a vital spreadsheet data file or that important
birthday calendar. For this, you can use the
-e file test, testing a filename for
die "Oops! A file called '$filename' already exists.\n" if -e $filename;
Notice that you don’t include
$! in this
die message, since you’re not reporting that the system refused a request in this case. Here’s an example of checking whether a file is being kept up-to-date. In this ...