in reply to Re^2: John Guttag's book - 2nd exercise. My attempt in Perl.
in thread John Guttag's book - 2nd exercise. My attempt in Perl.

Yes, Anonymous Monk, you're correct, this while loop has a bug when one of the values in the array is 0.

IMHO, this array traversal should really be made with a for loop, as it is usually better to use a for loop to iterate over an array, but the OP did not specify very clearly what was authorized and what not.

This is what it might look like with a for loop.

use strict; use warnings; my @array = (-11,-13,4, 22, 17); print find_max_odd(@array), "\n"; sub find_max_odd { my $max; for my $num (@_) { next unless $num % 2; $max = $num unless defined $max; $max = $num if $num > $max; } return defined $max ? $max : "No odd number found\n"; # this co +uld be replaced with if conditional statements if needed }