Revision history for Perl module Regexp-Common-URI-RFC3986
2025102001 2026-04-02T11:30:10+0900
- Initial release as a standalone CPAN distribution.
- Provides Regexp::Common::URI::RFC3986, a complete set of regex building blocks
transcribed from RFC 3986 (Uniform Resource Identifier: Generic Syntax, January 2005),
superseding RFC 2396.
- No dependency on Regexp::Common: all variables are plain interpolable strings
exported via Exporter. The module can be used independently of the Regexp::Common
framework.
- Key improvements over Regexp::Common::URI::RFC2396:
* $pct_encoded (replaces the old $escaped, kept as alias)
* $sub_delims and $unreserved per RFC 3986 ยง2
* Full path_* production set: $path_abempty, $path_absolute, $path_noscheme,
$path_rootless, $path_empty
* $IP_literal supporting IPv6 addresses and IPvFuture forms
* $IPv6address as a faithful transcription of all 9 alternatives from RFC 3986
Appendix A (the original RFC2396 module predates IPv6 literal support entirely)
- Addition with $IPv6address relative to the PR originally submitted to Regexp-Common
on 2025-10-20: the alternation set previously had only 8 forms, missing the 8th
RFC 3986 alternative:
[ *5( h16 ":" ) h16 ] "::" h16
This would have caused addresses such as "::1", "fe80::1", and "2001:db8::1" to
fail to match. All 9 alternatives are now correctly implemented.
- Backward-compatibility aliases for RFC 2396 names are exported:
$mark, $uric, $urics, $uric_no_slash, $escaped, $hostname, $domainlabel, $toplabel,
$hostport, $server, $rel_segment, $rel_path, $path_segments, $abs_path, $path,
$ftp_segments.
- Optional non-normative Unicode/IDN helpers under the :IDN export tag:
$IDN_DOT, $ACE, $IDN_U_LABEL, $IDN_HOST.
- Test suite: 162 tests, fully standalone (no dependency on the t::Common helper from
Regexp-Common).