File Tests : file test « File « Perl






File Tests

    

#-e True if the file exists.
#-f True if the file is a plain file  not a directory.
#-d True if the file is a directory.
#-z True if the file has zero size.
#-s True if the file has nonzero size  returns size of file in bytes.
#-r True if the file is readable by you.
#-w True if the file is writable by you.
#-x True if the file is executable by you.
#-o True if the file is owned by you.


#!/usr/bin/perl
use warnings;
use strict;
my $target = "myFile";
while (1) {
    if (-e $target) {
        print "File already exists. What should I do?\n";
        print "(Enter 'r' to write to a different name, ";
        print "'o' to overwrite or\n";
        print "'b' to back up to $target.old)\n";
        my $choice = <STDIN>;
        chomp $choice;
        if ($choice eq "r") {
            next;
        } elsif ($choice eq "o") {
            unless (-o $target) {
                print "Can't overwrite $target, it's not yours.\n";
                next;
            }
            unless (-w $target) {
                print "Can't overwrite $target: $!\n";
                next;
            }
        } elsif ($choice eq "b") {
            if ( rename($target,$target.".old") ) {
                print "OK, moved $target to $target.old\n";
            } else {
                print "Couldn't rename file: $!\n";
                next;
            }
        } else {
            print "I didn't understand that answer.\n";
            next;
        }
    }
    last if open OUTPUT, "> $target";
    print "I couldn't write on $target: $!\n";
}
print OUTPUT "Congratulations.\n";
print "Wrote to file $target\n";

   
    
    
    
  








Related examples in the same category

1.'-B filehandle': True if file is binary.
2.'-S filehandle': True if file is a socket (uppercase S).
3.'-T filehandle': True if file is an ASCII text file.
4.'-d filehandle': True if file is a directory.
5.'-e filehandle': True if file exists.
6.'-f filehandle': True if file is a normal file.
7.'-l filehandle': True if file is a symbolic link.
8.'-p filehandle': True if file is a named pipe (FIFO).
9.'-s filehandle': Returns size if file exists and has nonzero size.
10.'-w filehandle': True if filehandle is writable.
11.'-x filehandle': True if filehandle is executable.
12.'-z filehandle': True if file exists and its size is 0.
13.is the file a executable file?
14.is the file a plain file?
15.is the file a readable file?
16.is the file a writable file?
17.Test for file attributes
18.Tests for read permission on a file.
19.Tests whether the file is empty before opening it for writing.
20.File test operators
21.File testing script
22.File-Test Operator Syntax
23.File-test operators that check information returned by stat.
24.File-test operators that test for permissions.
25.File Tests for Age
26.File Tests for Execution
27.File Tests for Existence and Size
28.File Tests for Privileges
29.File Tests for Type
30.File Tests for Unix File Handle Types
31.File Test Operators[a]
32.Contents of the current directory
33.Get file modified/accessed time
34.Get the size of a file
35.Some -X File Tests
36.does file exist?