Challenge 1: A Subroutine with a Default — Possible Solution ==================================================================== use strict; use warnings; use feature 'say'; sub power { my ($base, $exponent) = @_; $exponent //= 2; return $base ** $exponent; } say power(5); # 25 say power(2, 8); # 256 Output: 25 256 WHY THIS WORKS AS AN ANSWER ------------------------------ my ($base, $exponent) = @_; reuses the chapter's own standard argument- unpacking idiom exactly — both potential arguments are captured into named scalars in one line, regardless of whether the caller actually supplied the second one. $exponent //= 2; reuses the chapter's own defined-or-assign operator directly, from the greet_user example — when power(5) is called with only one argument, $exponent is never set by @_ at all, so it starts as undef, and //= correctly supplies the default of 2 in that case. When power(2, 8) supplies both arguments, $exponent is already defined as 8, so //= leaves it untouched. return $base ** $exponent; reuses the exponentiation operator ** from Course 1's operator coverage, applied to whichever values $base and $exponent ended up holding — power(5) computes 5 ** 2 = 25 using the default, and power(2, 8) computes 2 ** 8 = 256 using the explicitly passed exponent.