What if we extract all digit sequences first?
@n=($s=~/\d+/g)
Then, replace only the last two with zero-padded versions
$i++ < @n - 2 ? $& : sprintf(...)
So, something like
perl -E '$s="abc-2de3-fg44-55.jpg"; @n=($s=~/\d+/g); $i=0; $s=~s/\d+/$i++ < @n - 2 ? $& : sprintf("%03d", $&)/ge; say $s'