in reply to Re: Simple Log Rotate Problem
in thread Simple Log Rotate Problem

So what you're really saying is your unlink() call is not succeeding? try this: if (-s $out) { mv ($out, $old) || die ("Could not mv: $!"); unlink ($out) || die ("Could not unlink: $!"); } And see why the unlink() call is failing.

The unlink is failing. Sorry for not pointing that out earlier. The return is: Can't unlink file: No such file or directory at ./vpnwarn.pl line 28. However, the file does exist. If I delete both of the log files, .old and .out, and run the script, the first time it succeeds, the second it fails with the above error.

Hope that sheds some more light.

Monger

Replies are listed 'Best First'.
Re: Re: Re: Simple Log Rotate Problem
by meetraz (Hermit) on Nov 13, 2003 at 22:04 UTC
    Try this:
    my $dir = "H:/vpn/"; my $out = "H:/vpn/vpnwarn.out"; my $old = "H:/vpn/vpnwarn.old"; if (-e $old) { unlink($old) || die ("Could not unlink: $!"); } if (-e $out) { mv ($out, $old) || die ("Could not mv: $!"); } # create and write new $out here
      Try this:
      my $dir = "H:/vpn/"; my $out = "H:/vpn/vpnwarn.out"; my $old = "H:/vpn/vpnwarn.old"; if (-e $old) { unlink($old) || die ("Could not unlink: $!"); } if (-e $out) { mv ($out, $old) || die ("Could not mv: $!"); } # create and write new $out here
      mmetraz, Thanks for the suggestion. I looked at it, tried it, and found my error. I was writing the .out and .old files to the same directory to which I was writing. So, each pass through the directory yielded a doubling of the size of the .out, and a corresponding increase in the .old. I did the quickest thing I could now: dropped the .out and .old to a different directory. However, I'll try to look at filtering my directory read better later.

      Thanks to all the monks who offered helped! I've looked at all your suggestions, and learned from each!

      monger