Checking File Attributes in Perl
I have been using perl for quite some time now. I have also been using the file handling logic in my scripts. However, what I did not know till now is that you can quickly check for certain file properties in perl. Here is an example:
#!/usr/bin/perl
my (@description,$size);
if (-e $file)
{
push @description, ‘binary’ if (-B _);
push @description, ‘a socket’ if (-S _);
push @description, ‘a text file’ if (-T _);
push @description, ‘a block special file’ if (-b _);
push @description, ‘a character special file’ if (-c _);
push @description, ‘a directory’ if (-d _);
push @description, ‘executable’ if (-x _);
push @description, (($size = -s _)) ? “$size bytes” : ‘empty’;
print “$file is “, join(‘, ‘,@description),”\n”;
}
Nice, isn’t it?
Here is the complete list of features that you can check:
| Operator | Description |
| -A | Age of file (at script startup) in days since modification. |
| -B | Is it a binary file? |
| -C | Age of file (at script startup) in days since modification. |
| -M | Age of file (at script startup) in days since modification. |
| -O | Is the file owned by the real user ID? |
| -R | Is the file readable by the real user ID or real group? |
| -S | Is the file a socket? |
| -T | Is it a text file? |
| -W | Is the file writable by the real user ID or real group? |
| -X | Is the file executable by the real user ID or real group? |
| -b | Is it a block special file? |
| -c | Is it a character special file? |
| -d | Is the file a directory? |
| -e | Does the file exist? |
| -f | Is it a plain file? |
| -g | Does the file have the setgid bit set? |
| -k | Does the file have the sticky bit set? |
| -l | Is the file a symbolic link? |
| -o | Is the file owned by the effective user ID? |
| -p | Is the file a named pipe? |
| -r | Is the file readable by the effective user or group ID? |
| -s | Returns the size of the file, zero size = empty file. |
| -t | Is the filehandle opened by a TTY (terminal)? |
| -u | Does the file have the setuid bit set? |
| -w | Is the file writable by the effective user or group ID? |
| -x | Is the file executable by the effective user or group ID? |
| -z | Is the file size zero? |
I’m Rajesh Kumar, a DevOps, SRE, DevSecOps, Cloud, and Platform Engineering expert passionate about sharing practical knowledge, real-world experiences, and industry best practices. I have worked at Cotocus and regularly write about technology, travel, investing, health, product reviews, and digital marketing through my various platforms.
I publish technical articles at DevOps School, travel stories at Holiday Landmark, stock market insights at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at TrueReviewNow, and SEO and digital marketing strategies at Wizbrand.
Find Trusted Cardiac Hospitals
Compare heart hospitals by city and services — all in one place.
Explore Hospitals
