Hi Phillip,
Thanks for all the additional information. Giving us the batch job IDs meant I could retrieve the output that was being parsed, which made it easily reproducible. It was indeed an issue in the Perl library. I've made a fix, and the fix will be in the next push of the Perl client library. In the meantime, if you would like to fix it in your own code base until that push goes out, here's the fix.
In ErrorUtils.pm replace:
($field_path_elements && (scalar $field_path_elements > 0))
with
($field_path_elements && (scalar @{$field_path_elements} > 0))
The issue was that if the field path elements for that error only had one element (which is not very common), Perl assumes it's just a string rather than an array. By forcing it always to an array, everything works properly. I gave it a try across all your errors, and it looks good to go.
Happy coding,
Nadine, AdWords API Team