Perl -X 函数


句法

-X FILEHANDLE
-X

定义和用法

文件测试,其中 X 是下面列出的字母之一。他的一元运算符采用一个参数(文件名或文件句柄),并测试关联的文件以查看其是否正确。

如果省略参数,则测试 $_

返回值

  • 1 如果条件为真
  • 如果条件为假则为 0
-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 (is empty).
-s	File has nonzero size (returns size in bytes).

-f	File is a plain file.
-d	File is a directory.
-l	File is a symbolic link.
-p	File is a named pipe (FIFO), or Filehandle is a pipe.
-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 an ASCII text file (heuristic guess).
-B	File is a "binary" file (opposite of -T).

-M	Script start time minus file modification time, in days.
-A	Same for access time.
-C	Same for inode change time

例子

使用一些文件尝试以下示例。

stat($filename);
print "Readable\n" if -r _;
print "Writable\n" if -w _;
print "Executable\n" if -x _;
print "Setuid\n" if -u _;
print "Setgid\n" if -g _;
print "Sticky\n" if -k _;
print "Text\n" if -T _;
print "Binary\n" if -B _;

# Another way of testing
if( -e $filename ){
   print " File $filename exists\n";
}
perl_function_references.htm