LargestSeriesProduct.pm (728B) - raw
1 package LargestSeriesProduct; 2 use strict; 3 use warnings; 4 use List::Util qw( product ); 5 use Exporter qw<import>; 6 our @EXPORT_OK = qw<largest_product>; 7 8 sub largest_product { 9 my ($input) = @_; 10 die "digits input must only contain digits" 11 if ($input->{digits} =~ m/\D+/); 12 die "span must be greater than zero" if ($input->{span} < 0); 13 my @digits = split //, $input->{digits}; 14 my $length = scalar @digits; 15 die "span must be smaller than string length" 16 if ($input->{span} > $length); 17 my $max = 0; 18 foreach my $i (0 .. $length - $input->{span}) { 19 my @substring = @digits[$i .. ($i + $input->{span} - 1)]; 20 my $product = product @substring; 21 $max = $product if ($product > $max); 22 } 23 return $max; 24 } 25 26 1;