Challenge 2: Diagnose the Missing 1; — Possible Solution ==================================================================== One-sentence explanation: A script trying to "use" or "require" this module fails with an error like "Module.pm did not return a true value at script.pl line N", because the module's LAST evaluated expression is the subroutine DEFINITION itself (which is not a true/false value in the sense Perl's loading mechanism checks), rather than an explicit true value. Corrected final lines (given a module ending with a sub definition, e.g.): sub some_function { ... } 1; # added — the required trailing true value WHY THIS WORKS AS AN ANSWER ------------------------------ The explanation reuses the chapter's own warn-box almost exactly — "Perl checks the file's last evaluated expression — if it isn't true, loading fails with 'Utils.pm did not return a true value'" — applied here to the specific scenario the challenge describes (a sub definition as the final statement) rather than the chapter's own generic Utils.pm example. A sub NAME_HERE { ... } block, as a statement, doesn't itself evaluate to a true or false value in the way Perl's module-loading check requires — it's a declaration, not an expression with a meaningful boolean result — so without something explicit after it, the module loading fails exactly as described. The fix reuses the chapter's own solution precisely: adding 1; as a new, separate final statement after every other line in the file, including after the last sub definition — this gives the file a genuine, unambiguous true value as its last evaluated expression, satisfying Perl's requirement and allowing use/require to succeed.