1.The -x File Tests
1 print "where? ";
2 $filename = <STDIN>;
3 chomp $filename; # toss pesky newline
4 if (-r $filename && -w $filename) {
5 # file exists, and I can read and write it
6
7 }
Table 10.1: File Tests and Their Meanings
File Test Meaning
-r File or directory is readable
-w File or directory is writable
-x File or directory is executable
-o File or directory is owned by user
-R File or directory is readable by real user, not effective user (differs from -r for setuid
programs)
-W File or directory is writable by real user, not effective user (differs from -w for setuid
programs)
-X File or directory is executable by real user, not effective user (differs from -x for setuid
programs)
-O File or directory is owned by real user, not effective user (differs from -o for setuid
programs)
-e File or directory exists
-z File exists and has zero size (directories are never empty)
-s File or directory exists and has nonzero size (the value is the size in bytes)
-f Entry is a plain file
-d Entry is a directory
-l Entry is a symlink
-S Entry is a socket
-p Entry is a named pipe (a "fifo")
-b Entry is a block-special file (like a mountable disk)
-c Entry is a character-special file (like an I/O device)
-u File or directory is setuid
-g File or directory is setgid
-k File or directory has the sticky bit set
-t isatty() on the filehandle is true
-T File is "text"
-B File is "binary"
-M Modification age in days
-A Access age in days
-C Inode-modification age in days
1 foreach (@some_list_of_filenames) {
2 print "$_ is readable\n" if -r; # same as -r $_
3 }
2.The stat and lstat Functions
1 ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,
2 $size,$atime,$mtime,$ctime,$blksize,$blocks) = stat()