1.The -x File Tests
1  print   " where?  " ;
2  $filename   =   < STDIN > ;
3  chomp   $filename #  toss pesky newline
4  if  ( - $filename   &&   - $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 ( )