Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does if( -f <filename> ) in Perl do?

Tags:

file

perl

I came across this line of code:

if( -f <filename> ) { ... } 

-f appears to test whether the filename exists or not, but I am not sure. Googling has not helped so far (it is hard to Google for "-f") and neither have my Perl books.

Can anyone please advise?

like image 728
doon Avatar asked May 30 '11 06:05

doon


People also ask

What is if (- F in Perl?

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. -

What does <> do in Perl?

The null filehandle <> is special: it can be used to emulate the behavior of sed and awk, and any other Unix filter program that takes a list of filenames, doing the same to each line of input from all of them. Input from <> comes either from standard input, or from each file listed on the command line.

What is $$ in Perl?

$$ - The process number of the Perl running this script. $0 - Contains the name of the program being executed.

What does $@ mean in Perl?

In these cases the value of $@ is the compile error, or the argument to die.


1 Answers

See perlfunc.

It lists all the Perl built-in functions, including the "file test" ones:

-X FILEHANDLE -X EXPR -X DIRHANDLE -X 

Where -X is one of the following:

-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) 
like image 65
paxdiablo Avatar answered Oct 02 '22 16:10

paxdiablo