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