if (!-e "$log"){ open(CREATE, "+>>$log") or die "$log failed: $!\n"; while (){ foreach $ser(@ser) { printf "%3s",$ser; } print "\n"; } close(CREATE); } #### 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"); } #### ... open CREATE ... foreach my $ser (@ser) { printf CREATE "%3s", $ser; }