Image::...gInfoXML(3)
π Image::ExifTool::TagInfoXML π
okay bestie, gather round, because this is the Image::ExifTool::TagInfoXML page from the User Contributed Perl Documentation, section 3 of your man pages, and it is lowkey the behind-the-scenes queen of the whole ExifTool operation. π
β¨ NAME β¨
Image::ExifTool::TagInfoXML β read/write tag information XML database. that's it, that's the whole vibe. it reads it, it writes it, it slays. π
πΈ DESCRIPTION πΈ
so here's the tea: this module is what you use to generate an XML database out of all the ExifTool tag information. every single crumb of it. π
and then β plot twist β once you've got that XML database, you can edit it and use it to re-generate the language modules (Image::ExifTool::Lang::*). it's giving source-of-truth energy. it's giving pipeline. it's giving i contain multitudes. π¦
π§ METHODS π§
π« Write
prints out the complete tag information database in XML format. full send, no holding back.
# save list of all tags
$success = Image::ExifTool::TagInfoXML::Write('dst.xml');
# list all IPTC tags to console, including Flags
Image::ExifTool::TagInfoXML::Write(undef, 'IPTC', Flags => 1);
# write all EXIF Camera tags to file
Image::ExifTool::TagInfoXML::Write($outfile, 'exif:camera');
Inputs:
0)β [optional] output file name, orundefif you want it to go to the console instead. heads up: if that output file already exists, it's getting overwritten. no takebacks, no "are you sure", it's just gone. π1)β [optional] a string of group names, separated by colons, that says which group to print. β οΈ important caveat: you can't specify a particular IFD as a group, because EXIF tags might get written to any IFD. if you don't specify anything, it saves all the groups. generous of it, honestly.2)β [optional] a hash of option values:Flagsβ set it to output the'flags'attributeNoDescβ set it to suppress output of descriptions (shy mode π)Langβ pick a single language for the output
Return Value:
Trueon success. π«Ά
Sample XML Output:
<?xml version='1.0' encoding='UTF-8'?>
<taginfo>
<table name='XMP::dc' g0='XMP' g1='XMP-dc' g2='Other'>
<desc lang='en'>XMP Dublin Core</desc>
<tag id='title' name='Title' type='lang-alt' writable='true' g2='Image'>
<desc lang='en'>Title</desc>
<desc lang='de'>Titel</desc>
<desc lang='fr'>Titre</desc>
</tag>
...
</table>
</taginfo>
and about those Flags β if you selected them and they're actually available, they show up formatted as a comma-separated list of these possible values:
AvoidBinaryListMandatoryPermanentProtectedUnknownUnsafe
for the lore on what these flags actually mean, go read the tag name documentation and lib/Image/ExifTool/README. π
oh and one more thing: for XMP List tags, the list type β Alt, Bag or Seq β also gets output as a flag, if it applies. β¨
π BuildLangModules
builds all the Image::ExifTool::Lang modules from an XML database file. glow-up for your whole language folder. π
Image::ExifTool::TagInfoXML::BuildLangModules('src.xml');
Inputs:
0)β XML file name1)β update flags:0x01= preserve version numbers0x02= update all modules, even if they didn't change0x04= update from scratch, ignoring existing definitions0x08= override existing different descriptions and values
Return Value:
- the number of modules updated, or a negative number if something went wrong. π
π AUTHOR π
Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
this library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. iconic behavior, honestly.
π SEE ALSO π
and that's the whole page, bestie!! π no cap, you now know this module better than most people ever will. this was perl v5.42.1, dated 2026-03-31, from the User Contributed Perl Documentation β go forth and XML-ify, you absolute main character. π¦πβ¨
π¦ where this page comes from
- fedora 43: perl-Image-ExifTool 13.50-1.fc43 Β· GPL-1.0-or-later OR Artistic-1.0-Perl
- fedora 44: perl-Image-ExifTool 13.50-1.fc44 Β· GPL-1.0-or-later OR Artistic-1.0-Perl
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms