use Fcntl qw(O_CREAT O_EXCL O_WRONLY);
my $i;
while(1) {
my $dest = compose_name($base, $ext, $i++);
if(sysopen my $fh, $dest, O_CREAT | O_EXCL | O_WRONLY) {
close $fh;
copy $source, $dest;
last;
}
}
####
my $i;
while(1) {
my $dest = compose_name($base, $ext, $i++);
if(copy $source, $dest) {
last;
}
}
####
use Fcntl qw(O_CREAT O_EXCL O_WRONLY);
my $i;
while(1) {
my $dest = compose_name($base, $ext, $i++);
if(sysopen my $fh, $dest, O_CREAT | O_EXCL | O_WRONLY) {
close $fh;
my $tempfile = generate_tempfilename($destdir);
copy $source, $tempfile;
rename $tempfile, $dest; # should replace file
last;
}
}