I needed to coordinate photos from three cameras with three different clock settings - one was correct, one an hour ahead, and one 2 hours ahead. I used similar code, but many pictures failed to update with a "Maker offsets" warning. The FixBase => '' option fixed that, and below is the code:
use strict;
use warnings;
use Image::ExifTool;
chdir("C:/Users/hbm/pictures/trip") or die("Unable to chdir: $!");
my $tool = Image::ExifTool->new();
$tool -> Options(FixBase => ''); # "best guess" for fixing Make
+r offsets
for my $jpg (glob("*.JPG")) {
$tool -> ExtractInfo($jpg);
my $camera = $tool->GetValue("Model");
next if $camera =~ /KODAK/i;
my $shift = ($camera =~ /SD1200/i) ? "2:00" : "1:00";
$tool -> SetNewValue(DateTimeOriginal => $shift, Shift => -1);
my $success = $tool->WriteInfo($jpg);
print "$jpg Update failed: ", $tool->GetValue('Error'), "\n" if
+!$success;
}