The -x File Tests
Now you know how to open a filehandle for output, overwriting any
existing file with the same name. Suppose you wanted to make sure
that there wasn’t a file by that name (to keep you from
accidentally blowing away your spreadsheet data or that important
birthday calendar).
Perl uses
-e
$filevar
to test for the
existence of the file named by the scalar value in
$filevar
. If this file exists, the result
is true; otherwise it is false. For example:
$name = "index.html"; if (-e $name) { print "I see you already have a file named $name\n"; } else { print "Perhaps you'd like to make a file called $name\n"; }
The operand of the -e
operator is really just any
scalar expression that evaluates to some string, including a string
literal. Here’s an example that checks to see whether both
index.html and index.cgi
exist in the current directory:
if (-e "index.html" && -e "index.cgi") { print "You have both styles of index files here.\n"; }
Other operators are defined as well. For example,
-r
$filevar
returns true if the file named in
$filevar
exists and is readable.
Similarly, -w
$filevar
tests whether it is writable. Here’s an example that tests a
user-specified filename for both readability and writability:
print "where? "; $filename = <STDIN>; chomp $filename; # toss pesky newline if (-r $filename && -w $filename) { # file exists, and I can read and write it ... }
Many more file tests are available, some of which are not applicable to Perl for Win32. Table 10.1 lists some file ...
Get Learning Perl on Win32 Systems now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.