Challenge 2: Catch the Typo — Possible Solution ==================================================================== Given: use strict; use warnings; my $message = "Hello"; print $mesage; # typo: missing the "s" in "message" The exact compile-time error Perl would raise: Global symbol "$mesage" requires explicit package name (did you forget to declare "my $mesage"?) at script.pl line 6. WHY THIS WORKS AS AN ANSWER ------------------------------ This reuses the chapter's own warn-box example almost exactly — $user_name / $usr_name became $message / $mesage here, but the underlying mistake is identical: a variable name typo'd on its second use. The one-sentence explanation: use strict is what causes this to be a hard compile-time ERROR rather than silently succeeding, because it requires every variable to be explicitly declared (via my, our, or local) before it can be used — and since $mesage (the typo) was never declared anywhere, strict refuses to let the script run at all, rather than allowing Perl's default permissive behavior of silently treating $mesage as a brand-new, separate, empty variable the way the chapter's own un-strict example showed happening. This is the entire practical value of use strict the chapter describes: turning a category of bug that would otherwise print nothing (or the wrong thing) with no warning at all into an immediate, specific, line-numbered error caught before the script ever runs.