Perl中的if(-f <filename>)有什么作用?

doo*_*oon 27 perl file

我遇到了这行代码:

if( -f <filename> ) { ... }
Run Code Online (Sandbox Code Playgroud)

-f似乎测试文件名是否存在,但我不确定.到目前为止谷歌搜索没有帮助(谷歌很难用"-f"),也没有我的Perl书籍.

任何人都可以建议吗?

pax*_*blo 31

perlfunc.

它列出了所有Perl内置函数,包括"文件测试"函数:

-X FILEHANDLE
-X EXPR
-X DIRHANDLE
-X
Run Code Online (Sandbox Code Playgroud)

其中-X一个是:

-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 (Unix, may differ for other platforms)
Run Code Online (Sandbox Code Playgroud)

  • 普通文件的定义是什么?只是问问。 (2认同)

ike*_*ami 7

在Unix中,目录可以包含以下类型的文件:

  • 平原(你会考虑什么文件)
  • 目录
  • 命名管道
  • 命名套接字
  • ...

-f测试提供的名称是否引用了普通文件的文件.ENOENT如果文件不存在,它将返回undef(错误),如果文件存在但是它不是普通文件(例如,如果它是目录),它将返回一些其他错误值.

-X运营商