Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Re: returnong array in custom subroutine

by kroach (Pilgrim)
on Aug 31, 2016 at 14:08 UTC ( #1170896=note: print w/replies, xml ) Need Help??

in reply to returning array in custom subroutine

There are two errors in the code:
my $normalized = my $numdiv / $numden;
You declare $numdiv again with my, resetting it's value, this should have produced a warning.

foreach my $element(@array) { # loop over args ... my $normalized = my $numdiv / $numden; # normalize } return $normalized;
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.

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; }

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1170896]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (4)
As of 2020-10-24 18:40 GMT
Find Nodes?
    Voting Booth?
    My favourite web site is:

    Results (246 votes). Check out past polls.