Skip to content
Related Articles

Related Articles

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:




#!/usr/bin/perl
  
# Using predefined modules
use warnings;
use strict;
   
# Providing path of file to a variable
my $filename = 'C:\Users\GeeksForGeeks\GFG.txt';
  
# Checking for the file existence
if(-e $filename)
{
      
    # If File exists
    print("File $filename exists\n");
}
  
else
{
      
    # If File doesn't exists
    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:

OperatorDescription
-rchecks if the file is readable
-wchecks if the file is writable
-xchecks if the file is executable
-ochecks if the file is owned by effective uid
-Rchecks if file is readable by real uid
-Wchecks if file is writable by real uid
-Xchecks if file is executable by real uid/gid
-Ochecks if the file is owned by real uid
-echecks if the file exists
-zchecks if the file is empty
-schecks if the file has nonzero size (returns size in bytes)
-fchecks if the file is a plain text file
-dchecks if the file is a directory
-lchecks if the file is a symbolic link
-pchecks if the file is a named pipe (FIFO): or Filehandle is a pipe
-Schecks if the file is a socket
-bchecks if the file is a block special file
-cchecks if the file is a character special file
-tchecks if the file handle is opened to a tty
-uchecks if the file has setuid bit set
-gchecks if the file has setgid bit set
-kchecks if the file has sticky bit set
-Tchecks if the file is an ASCII text file (heuristic guess)
-Bchecks 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:




#!/usr/bin/perl
  
# Using predefined modules
use warnings;
use strict;
   
# Providing path of file to a variable
my $filename = 'C:\Users\GeeksForGeeks\GFG.txt';
  
# Applying multiple Test Operators 
# on the File
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.

My Personal Notes arrow_drop_up
Recommended Articles
Page :