punkish has asked for the wisdom of the Perl Monks concerning the following question:
I am working on Windows. My script has a BEGIN block
BEGIN { $0 =~ /^(.*)\\([^\\]*)\.pl$/; our ($path, $prog) = ($1, $2); open(STDERR, ">>$path/$prog.err") or die "invisible error"; warn "$0 started ". localtime() . $/; }
Besides the .err created above, I also have a .log to which I write other conversational stuff.
Further in my code I have a little homespun log rotation snippet. Essentially, if .err or .log filesize is more than a preset value, I move it to a "backlogs" directory (using File::Copy::move) and create a new one.
The script is able to do the above to the .log file, but fails with "Permission denied" error for the .err file. I am guessing that is because the Perl process is not letting go of the .err file.
What can I do to coax the .err file out of the program's hand so that the program can archive it and start another one?
In anticipation...
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Getting around a possible file lock
by moot (Chaplain) on Apr 08, 2005 at 18:48 UTC | |
|
Re: Getting around a possible file lock
by tlm (Prior) on Apr 08, 2005 at 22:15 UTC | |
|
Re: Getting around a possible file lock
by dmorelli (Scribe) on Apr 08, 2005 at 19:09 UTC |