in reply to returning array in custom subroutine
You declare $numdiv again with my, resetting it's value, this should have produced a warning.my $normalized = my $numdiv / $numden;
You make a $normalized variable local to the loop and try to return it outside, this shouldn't compile with strict vars. Using warnings and strict will help you catch simple mistakes like these.foreach my $element(@array) { # loop over args ... my $normalized = my $numdiv / $numden; # normalize } return $normalized;
You can use $element to modify the array (it is an alias, not a copy). $numden is not dependent on the array element, so there is no need to calculate it each time.
This should work:use List::Util qw( min max ); sub normalizer { my @array = @_; my $min_numarray = min @array; my $max_numarray = max @array; my $numden = $max_numarray - $min_numarray; foreach my $element (@array) { my $numdiv = $element - $min_numarray; $element = $numdiv / $numden; } return @array; }
|
|---|