Changes for version 1.06 - 2026-03-23
- Coding style aligned with DB-Handy and HTTP-Handy:
- Module header: added Compatible/Platform comment block.
- use strict/warnings order unified: use strict -> BEGIN{warnings stub} -> use warnings; local $^W = 1; -> BEGIN { pop @INC } (DB-Handy style).
- $VERSION declared via use vars (aligned with DB-Handy/HTTP-Handy style).
- Section separators changed from # ---...--- (65 chars) to ###...### (79 chars) matching DB-Handy and HTTP-Handy.
- pmake.bat: install target now greps lib/**/*.pm only (DB-Handy style).
- Code style fixes (K-category):
- K1: comma-space: my($s,$k) -> my($s, $k) in ThenBy* methods.
- K2: \@items -> [ @items ] where passed as argument (OrderBy*, Reverse, GroupJoin).
- K3: return \%hash exempted; no other \%hash violations in code.
- Test suite improvements (knowledge from DB-Handy and HTTP-Handy):
- Naming and style:
- Renamed test files to 4-digit zero-padded hyphen format (001_basic.t -> 0001-basic.t, etc.).
- Rewrote all functional test harnesses to DB-Handy/HTTP-Handy style: use strict, BEGIN{warnings stub}, BEGIN{pop @INC}, use FindBin / use lib, ($PASS, $FAIL, $T) variables, 1-line ok/is/like subs, print "1..N\n" plan, exit($FAIL ? 1 : 0) at end.
- Removed shebang line (#!/usr/bin/perl) from t/0014-style.t.
- New test files:
- t/0010-usascii.t: US-ASCII check for all MANIFEST files (replaces t/010_ascii_only.t which only checked lib/LTSV/LINQ.pm); doc/ files exempt (UTF-8 cheat sheets).
- t/0015-perl5compat.t: Perl 5.005_03 compatibility checks (P1-P12) covering forbidden keywords, operators, VERSION self-assignment, warnings stub, and CVE-2016-1238 mitigation.
- t/0016-cpan_precheck.t: comprehensive pre-publication check suite (categories A-K, 240 tests) ported from HTTP-Handy; covers file structure, version consistency, encoding, compatibility, style, META integrity, POD completeness, Changes format, and Makefile.PL; eg/*.pl included in C/E style checks.
- Samples and documentation:
- eg/01_ltsv_query.pl: LTSV file query with FromLTSV/Where/Select/ OrderByNumDescending/Distinct/ToLookup.
- eg/02_array_query.pl: in-memory array queries, aggregation, Any/All, Skip/Take paging, Zip.
- eg/03_grouping.pl: GroupBy, ToLookup, GroupJoin (left outer join), SelectMany with array-ref selector.
- eg/04_sorting.pl: OrderBy/ThenBy multi-key sort, OrderByNum vs OrderByStr, Reverse.
- doc/linq_cheatsheet.*.txt: LTSV::LINQ cheat sheets in 21 languages covering query creation, filtering, projection, sorting, grouping, set operations, joins, aggregation, and official spec links.
- README: rewritten to DB-Handy/HTTP-Handy structure with NAME, SYNOPSIS, DESCRIPTION, INCLUDED DOCUMENTATION, INSTALLATION, COMPATIBILITY (Perl 5.005_03 philosophy), TARGET USE CASES, LIMITATIONS, AUTHOR, and COPYRIGHT AND LICENSE.
- Documentation fixes:
- POD =head1 VERSION: corrected from "Version 1.05" to "Version 1.06".
- POD TABLE OF CONTENTS: added missing sections (INCLUDED DOCUMENTATION, DESIGN PHILOSOPHY, LIMITATIONS AND KNOWN ISSUES, BUGS, SUPPORT); removed phantom entry (Data Source Methods is =head2, not =head1) and non-standard entries (AUTHOR, COPYRIGHT AND LICENSE).
- POD: added =head1 INCLUDED DOCUMENTATION section listing eg/ and doc/ files (aligned with DB-Handy and HTTP-Handy).
- POD DIAGNOSTICS: added four missing die-message entries: "Sequence contains more than one element" (Single), "Index must be non-negative" and "Index out of range" (ElementAt), "Invalid number of arguments for Aggregate" (Aggregate).
- POD DIAGNOSTICS: added full =item C<...> entries with description and examples for all four new die messages.
- README and eg/01_ltsv_query.pl: corrected method name FromFile -> FromLTSV (FromFile does not exist).
- eg/01_ltsv_query.pl: removed shebang (#!/usr/bin/perl); added OrderBy to Demonstrates (used in code but previously unlisted).
- eg/02_array_query.pl: added Contains example to match Demonstrates comment; corrected Demonstrates to include OrderByNumDescending; added ToArray to Demonstrates.
- eg/03_grouping.pl: removed shebang; added Select, Sum, OrderBy, Distinct, ToArray to Demonstrates (all used in code).
- eg/04_sorting.pl: removed shebang; corrected Demonstrates to match actual usage (removed OrderByDescending, ThenBy, ThenByDescending which are not used; added ThenByNumDescending, ThenByStr).
- doc/linq_cheatsheet.*.txt: all 21 language cheat sheets rewritten with complete method coverage (60 methods, sections [1..12]); section 11 "Conversion methods" added (ToDictionary, ToLookup, ToLTSV, ToList); corrected Append/Prepend phantom entries removed; non-ASCII native scripts used for KO, ZH, TW, JA, TH, HI, BN, MY, KM, MN, NE, SI, UR (aligned with DB-Handy style).
Modules
LINQ-style query interface for LTSV files
Provides
in lib/LTSV/LINQ.pm