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, or undef if 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' attribute
    • NoDesc β€” set it to suppress output of descriptions (shy mode πŸ™ˆ)
    • Lang β€” pick a single language for the output

Return Value:

  • True on 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:

  • Avoid
  • Binary
  • List
  • Mandatory
  • Permanent
  • Protected
  • Unknown
  • Unsafe

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 name
  • 1) β€” update flags:
    • 0x01 = preserve version numbers
    • 0x02 = update all modules, even if they didn't change
    • 0x04 = update from scratch, ignoring existing definitions
    • 0x08 = 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