Changes for version 0.022 - 2026-08-05

  • Support various web framework Upload objects being used as ->input
  • Use content_type if available in preference to file extension or content heuristics.
  • Differentiate between real_file_name and client_file_name, and ignore the file extension of real_file_name if client_file_name exists. (e.g. things broke when Catalyst changed the file extension to .upload) These show as new attributes on the Decoder.
  • Much improved detection and handling of charset for CSV, TSV, and HTML
  • Properly handle consequences of writes to the ->fields(...) attribute by clearing other attributes.
  • Fix several col_map lifecycle bugs: preserve the caller's original array, restore the supplied map after clearing search results, re-resolve it after fields change, and avoid reusing a previous search result during subsequent find_table calls.
  • Fix bug when using ->seek on a record iterator which had reached EOF or was in the middle of counting blank lines.
  • Fix ability to use ->all on a record iterator where record objects could stringify to a false value.
  • More API validation and better error messages in a variety of edge cases.
  • Stop logging at 'notice' level since it isn't supported by all common logger objects.
  • Fix numerous documentation mistakes, including callback argument list of on_partial_match and on_unknown_columns.
  • Additionally pass the %candidate structure to on_unknown_columns callback.

Documentation

Modules

Extract records from "dirty" tabular data sources
Base class for table decoders
Access rows of a comma-delimited text file
Access rows of a badly formatted comma-delimited text file
Decoder that returns supplied data without decoding anything
Base class for implementing spreadsheet decoders
Access rows of a tab-delimited text file
Access sheets/rows of a Microsoft Excel '97 workbook
Access sheets/rows of a modern Microsoft Excel workbook
Field specification for Data::TableReader
Base class for iterators (blessed coderefs)