+sub write_history($$$$$) {
+ my ($self, $task, $part, $ext, $filename) = @_;
+ my $hist = $self->{"History"};
+ -d $hist or mkdir $hist or return "Unable to create $hist: $!";
+ my $now = POSIX::strftime("%H:%M:%S", localtime(time));
+ my $maybe_part = ($part eq $task) ? "" : ":$part";
+ my $name = "$hist/$now-$task$maybe_part.$ext";
+ $self->log("Backing up to $name");
+ `cp "$filename" "$name"`;
+ return "Unable to back up $filename as $name" if $?;
+ return undef;
+}
+