use Fcntl qw(O_CREAT O_EXCL O_APPEND O_RDWR); if (sysopen(CREATE, $log, O_APPEND|O_RDWR|O_EXCL|O_CREAT)) { ... CREATE is now open, do something with it ... } else { warn("Unable to open log file '$log': $!.\n"); }