Perl | File Test Operators
Last Updated :
21 Feb, 2019
File Test Operators in Perl are the logical operators which return True or False values. There are many operators in Perl that you can use to test various different aspects of a file. For example, to check for the existence of a file -e operator is used. Or, it can be checked if a file can be written to before performing the append operation. This will help to reduce the number of errors that a program might encounter.
Following example uses the ‘-e’, existence operator to check if a file exists or not:
use warnings;
use strict;
my $filename = 'C:\Users\GeeksForGeeks\GFG.txt' ;
if (-e $filename )
{
print ( "File $filename exists\n" );
}
else
{
print ( "File $filename does not exists\n" );
}
|
Output:
Filename or filehandle is passed as an argument to this file test operator -e.
Following is a list of most important File Test Operators:
Operator |
Description |
-r |
checks if the file is readable |
-w |
checks if the file is writable |
-x |
checks if the file is executable |
-o |
checks if the file is owned by effective uid |
-R |
checks if file is readable by real uid |
-W |
checks if file is writable by real uid |
-X |
checks if file is executable by real uid/gid |
-O |
checks if the file is owned by real uid |
-e |
checks if the file exists |
-z |
checks if the file is empty |
-s |
checks if the file has nonzero size (returns size in bytes) |
-f |
checks if the file is a plain text file |
-d |
checks if the file is a directory |
-l |
checks if the file is a symbolic link |
-p |
checks if the file is a named pipe (FIFO): or Filehandle is a pipe |
-S |
checks if the file is a socket |
-b |
checks if the file is a block special file |
-c |
checks if the file is a character special file |
-t |
checks if the file handle is opened to a tty |
-u |
checks if the file has setuid bit set |
-g |
checks if the file has setgid bit set |
-k |
checks if the file has sticky bit set |
-T |
checks if the file is an ASCII text file (heuristic guess) |
-B |
checks if the file is a “binary” file (opposite of -T) |
You can use the AND logical operator in conjunction with file test operators as follows:
use warnings;
use strict;
my $filename = 'C:\Users\GeeksForGeeks\GFG.txt' ;
if (-e $filename && -f _ && -r _ )
{
print ( "File $filename exists and readable\n" );
}
else
{
print ( "File $filename doesn't exists" )
}
|
Output:
Above example, checks for the existence of the file and if the file is plain or not and if it is readable.
Share your thoughts in the comments
Please Login to comment...