Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

Re: Re: Safe way to open files

by L0rdPhi1 (Sexton)
on Jun 16, 2002 at 10:44 UTC ( #174917=note: print w/replies, xml ) Need Help??

in reply to Re: Safe way to open files
in thread Safe way to open files

I'm now using the below. Anyone see any problems? Should I still use truncate($fh, 0); after seek or does the sysopen take care of that?
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) or die "Can't open $fn: $!"; if ($flock_enabled) { flock($fh, LOCK_EX) or die "Can't flock $fn: $!"; } seek $fh, 0, 0; return $fh; }

Replies are listed 'Best First'.
Re: Re: Re: Safe way to open files
by Anonymous Monk on Jun 16, 2002 at 22:26 UTC
    No. You do not want an unconditional seek in the routine. If it was opened with O_TRUNC or O_RDONLY it isn't needed (neither is truncate), if it was opened with O_APPEND then you definitely do not want to seek nor truncate.
      Okay! Thanks a lot++

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://174917]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (4)
As of 2021-06-20 21:42 GMT
Find Nodes?
    Voting Booth?
    What does the "s" stand for in "perls"? (Whence perls)

    Results (95 votes). Check out past polls.