for($i = $self->{'Count'}; $i > 1; $i--) {
$j = $i - 1;
$next = "${currn}." . $i . $ext;
$prev = "${currn}." . $j . $ext;
if ( -r $prev && -f $prev ) {
move($prev,$next) ## move will attempt rename for us
or croak "error: move failed: ($prev,$next)";
}
}
and change
$next = "${currn}.1";
to
$next = "${currn}_" . strfmt('...', localtime);
Here's some time formats friendly to Windows and UNIX shells which are string-sortable:
use POSIX qw(strftime);
@t = localtime;
$\ = "\n";
print strftime("%Y%m%d%H%M%S", @t); # logfile_20040914151753
print strftime("%Y%m%d-%H%M%S", @t); # logfile_20040914-151753
print strftime("%Y-%m-%d-%H%M%S", @t); # logfile_2004-09-14-151753
print strftime("%Y-%m-%d@%H-%M-%S", @t); # logfile_2004-09-14@15-17-53
|