in reply to Safe way to open files
Here's an approach that reduces the number of file-opening calls you need to manage --- determine what flags you want on the file handle and use sysopen once. In the following modes 1 and 2 act like > and >> respectively, else the file is opened read-only. This can be altered --- if you'd rather fail on attempting to append to a non-existing file, remove the O_CREAT flag from mode 2 for example.
use Fcntl qw(:DEFAULT :flock); # assume $flock_enabled set accordingly sub safe_open { my $fn = shift; $fn =~ s/^(>>?)//; $mode = length($1); my $flags = $mode == 1 ? O_CREAT | O_WRONLY | O_TRUNC : $mode == 2 ? O_CREAT | O_WRONLY | O_APPEND : O_RDONLY; sysopen(my $fh, $fn, $flags) || die "Can't open $fn: $!"; flock($fh, LOCK_EX) || die "Can't flock $fn: $!" if $flock_enabled +; return $fh; }
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Re: Safe way to open files
by L0rdPhi1 (Sexton) on Jun 16, 2002 at 10:44 UTC | |
by Anonymous Monk on Jun 16, 2002 at 22:26 UTC | |
by L0rdPhi1 (Sexton) on Jun 17, 2002 at 01:36 UTC |
In Section
Seekers of Perl Wisdom