10.5 Getting File Information
It is useful to find out information about a file before attempting to open, read or write to it. Perl provides a way to find out facts such as whether a file exists, how old it is, whether it a read-only or not. In fact there are 27 different tests you can perform on a file.
For example you can test to see if a file exists:
die "Cannot create file. Already exists.\n"
if -e "mydatafile"
The following table lists the full set of file tests available:
Operator Meaning
-r File is readable by effective uid/gid.
-w File is writable by effective uid/gid.
-x File is executable by effective uid/gid.
-o File is owned by effective uid.
-R File is readable by real uid/gid.
-W File is writable by real uid/gid.
-X File is executable by real uid/gid.
-O File is owned by real uid.
-e File exists.
-z File has zero size.
-s File has non-zero size (returns size).
-f File is a plain file.
-d File is a directory.
-l File is a symbolic link.
-p File is a named pipe (FIFO).
-S File is a socket.
-b File is a block special file.
-c File is a character special file.
-t Filehandle is opened to a tty.
-u File has setuid bit set.
-g File has setgid bit set.
-k File has sticky bit set.
-T File is a text file.
-B File is a binary file (opposite of -T).
-M Age of file (at startup) in days since modification.
-A Age of file (at startup) in days since last access.
-C Age of file (at startup) in days since inode change.