|
Written by Rajesh Kumar
|
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?
|
|