Revision history for App-makefilepl2cpanfile
0.04 Sun Aug 2 12:59:14 PM EDT 2026
[ Bug Fixes ]
Gracefully handle Makefile.PL files containing invalid UTF-8 bytes: fall back to
raw-byte read and emit a carp warning rather than dying; true I/O errors
(EIO, ENOENT, etc.) are still propagated to the caller
0.03 Wed Jul 22 20:12:54 EDT 2026
[ Enhancements ]
Extract parse_prereqs() as a public API function
Preserve inline comments from Makefile.PL entries in generated cpanfile
Parse structured prereqs => { phase => { rel => { ... } } } blocks,
including those nested under META_MERGE
Extract recommends and suggests relationships into cpanfile output
Support brace nesting up to four levels deep in dependency blocks
Replace File::Slurp with Path::Tiny throughout
Add Carp (croak/carp) in place of die/warn in library code
Add Readonly constants for phase map, phase order, and develop defaults
Guard against directories being passed as the makefile path
[ Security ]
Validate YAML config keys and values against strict patterns to prevent cpanfile code injection
Save $1/$2 before inner validation regex to prevent capture-variable clobber in develop-block merge
Add word-boundary anchors to MIN_PERL_VERSION extraction pattern
Use possessive quantifiers in all brace-extraction and module-name regexes to eliminate backtracking
[ Performance ]
Replace grep with List::Util::any (short-circuits) for develop-phase presence check
Replace each with keys in _load_develop_config to avoid stale iterator cursor
Add '0' short-circuit to _has_version to avoid looks_like_number call for zero versions
[ Tests ]
Add t/parse_prereqs.t, t/error_paths.t, t/locales.t, t/extended_tests.t
0.02 Mon Mar 30 19:22:57 EDT 2026
Added which tool created it
Ignore comments in Makefile.PL
Improved handling of version set to '0'
Improved error handling
With_develop now defaults to 1.
Handle on develop being in quotes
0.01 Fri Jan 2 21:38:25 EST 2026
First draft