NAME
CPAN::Changes::Parser::KeepAChangeLog - Parser for Keep a Changelog formatted files
SYNOPSIS
use CPAN::Changes::Parser::KeepAChangeLog;
my $parser = CPAN::Changes::Parser::KeepAChangeLog->new;
my $changes = $parser->parse_file('CHANGELOG.md');
for my $release ($changes->releases) {
printf "%s %s\n", $release->version, $release->date;
for my $entry ($release->entries) {
printf " - %s\n", $entry->text;
}
}
DESCRIPTION
This module extends CPAN::Changes::Parser to parse changelog files that follow the Keep a Changelog format (https://keepachangelog.com/) version 1.1.0.
Keep a Changelog uses Markdown-style formatting with specific conventions for releases and change categories. This parser transforms that format into CPAN::Changes objects that can be used within the Perl ecosystem.
Supported Format Features
Release headings:
## [version] - dateor## [Unreleased]Category headings:
### Added,### Fixed, etc.Bulleted lists with
-or*Link reference definitions (automatically filtered out)
METHODS
This module inherits all methods from CPAN::Changes::Parser.
parse_string
my $changes = $parser->parse_string($changelog_string);
Parses a Keep a Changelog formatted string and returns a CPAN::Changes object, or undef if the string does not appear to be in Keep a Changelog format.
ATTRIBUTES
version_like
This attribute is overridden to recognize "Unreleased" as a valid version identifier.
SEE ALSO
AUTHOR
Dave Cross <dave@perlhacks.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2026 by Dave Cross.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.