Я новичок в PERL и еще новее в ExifTool - и поэтому, вероятно, упускаю что-то довольно простое.
Цель - прочитать поля XMP из файла фотографии.Просматривая документацию exiftool как на сайте ExifTool, так и на CPAN, я смог без проблем прочитать файлы с тегами jpeg и XMP sidecar.
Проблема в том, что когда я читаю из необработанного файла, который, очевидно, не имеет пользовательских полей, я получаю ошибку с неинициализированным значением.Этого и следовало ожидать.
Итак, я хочу иметь код, который говорит: «Если вы читаете поле / тег из необработанного файла, а его там нет, посмотрите на связанный файл XMP и, если этоне удается, верните пустую строку. "
Поэтому я попытался открыть второй экземпляр ExifTool, например:
my $exifInfo = ImageInfo($filePath);
переходит к
my $exifInfoXMP = ImageInfo($filePathXMP);
Но этопродолжает терпеть неудачу.Если я читаю XMP непосредственно с самого начала, он работает просто отлично, поэтому у меня складывается впечатление, что я не могу читать две структуры ExifTool одновременно (что не может быть правильным; я должен быть здесь ошибкой),Приведенный ниже код работает, но я не могу «чередовать» условия для двух файлов.Сначала мне нужно обработать raw, затем выполнить второй проход с новым обработчиком для XMP.Зная, насколько эффективен PERL, мой подход не может быть хорошим (даже если он выполняет свою работу).
В частности, есть одна строчка, которая озадачивает меня.Если я удаляю его, ничего не работает.(это должно быть четко обозначено).
$filePath =~ s/$photoExtensions$/.XMP/i;
Эта важная строка делает то же самое, что и чтение XMP с самого начала (не мое идеальное решение).
У любого есть идея, какгде я все испортил?
Спасибо,
Paul
header [ИЗМЕНЕНО, ЧТОБЫ ПОКАЗАТЬ ВСЕ ВАРИАНТЫ;ПОКАЗАНО ВСЕГО, ИСПОЛЬЗУЕМЫЕ В ВОПРОСЕ