Mega Code Archive

 
Categories / Perl / File
 

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";