Revision history for Params-Get
0.16 Fri Aug 7 09:51:33 AM EDT 2026
[ Bug fixes ]
- Don't rely on PVS (GitHub#5)
I have not been able to reproduce this, so I do not know if this fix works
[ Enhancements ]
- Remove provably redundant "$default &&" pre-check in the positional-names
guard: ref(X) eq "ARRAY" implies X is always truthy, so the conjunction's
left operand can never flip the branch (deductive reduction R1)
- Collapse five one-arg dispatch arms to two via De Morgan boolean reduction:
SCALAR (deref) pulled left as fast guard; plain scalar/ARRAY/CODE/blessed
merged into one disjunction (reduction R2)
- Update PSEUDOCODE POD to document the formal premises behind both reductions
- Cache ref($default) in $default_ref to avoid 2-3 redundant ref() calls per
invocation when $default is an ARRAY ref or a plain string
- Replace named intermediate hash (my %rc = ...; \%rc) with direct anonymous
hashref ({ @{$args} }) in the even-length named-pairs path: ~9% faster
[ Tests ]
- Add t/lib/TestHelper.pm: shared $USAGE_RE and $DEFAULT_CROAK_RE constants,
eliminating five identical per-file Readonly definitions
- Fix greedy qr/latitude.*must be/ to non-greedy with /x in t/integration.t
- Use \Q->\E instead of bare -> in regex literals in t/extended_tests.t
- Add t/cgi_security.t: 32-subtest penetration test suite covering command
injection, path traversal, XSS, CRLF header injection, SQL injection
passthrough, STDIN isolation, duplicate-key attack vector, hostile $default
values, resource exhaustion, global-state integrity, and taint propagation
0.15 Tue Jun 30 10:17:42 EDT 2026
[ Bug fixes ]
- Ensure Makefile.PL has the latest META_MERGE format
- Replace Devel::Confess::longmess (internal API) with Carp::confess
- Remove Devel::Confess dependency: it installed process-wide %SIG handlers
as a library side-effect and read taintable env vars under -T
- Fix caller variable mutation: REF-unwrap now works on a copy, not the
@_ alias, so the caller's variable is never silently modified
- Fix array-slice syntax @{$_[0]}[0] -> $_[0]->[0]
[ New features ]
- $default may now be an arrayref of positional key names:
get_params([qw(name age)], 'Alice', 30) -> { name => 'Alice', age => 30 }
[ Tests ]
- Add t/locales.t: verify error messages are locale-independent
- Add arrayref-default coverage to t/get_params.t
[ Code quality ]
- Modernise Exporter: use parent 'Exporter' replaces @ISA manipulation
- Add Readonly sentinels for ref-type strings
- Remove dead commented-out code and FIXME blocks
- Expand POD: LIMITATIONS, MESSAGES table, FORMAL SPECIFICATION, PSEUDOCODE
0.14 Tue May 19 21:40:21 EDT 2026
Document the default argument
Sanity check $default
Bug fixed where named-parameter extraction was mishandling hashref arguments in certain calling conventions,
where the default was the key to the wanted hash value
0.13 Mon Aug 4 16:59:56 EDT 2025
Back out 0.12, too much breakage
0.12 Mon Aug 4 14:34:29 EDT 2025
Params::Get::get_params('list', []) now returns empty array
0.11 Mon Jul 28 07:41:24 EDT 2025
get_params(undef, undef) now returns undef
0.10 Fri Jul 25 11:37:24 EDT 2025
Improved handling of:
in main:
routine('countries' => []);
in routine():
$params = Params::Get::get_params('countries', \@);
0.09 Wed Jul 23 13:46:12 EDT 2025
Improved handling of:
in main:
routine('country' => 'US');
in routine():
$params = Params::Get::get_params('country', \@);
0.08 Thu May 29 14:05:49 EDT 2025
Check number of parameters before the quick return
Use Devel::Confess to give a full stacktrace
Handle get_params('foo', {}), and get_params('foo' => {});
0.07 Fri May 23 07:07:13 EDT 2025
Fix dependancy. I added Params::Get rather than Scalar::Utils (RT#165760)
0.06 Thu May 22 16:51:58 EDT 2025
Allow the default to be a CODE ref
0.05 Thu May 22 13:35:12 EDT 2025
Handle the model of a mandatory parameter followed by a hash ref of options
Go some way to fixing problems using \@_ rather than @_
0.04 Mon Apr 28 16:50:23 EDT 2025
Fix when there's only one argument which is a ref to an array
0.03 Thu Apr 24 10:17:51 EDT 2025
Allow a ref to an array to be past to reduce size of the stack
0.02 Mon Mar 24 07:43:54 EDT 2025
Fewer tests in the code
0.01 Thu Feb 27 12:16:57 EST 2025
First draft