Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: returnong array in custom subroutine

by kroach (Pilgrim)
on Aug 31, 2016 at 14:08 UTC ( [id://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?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others about the Monastery: (5)
As of 2024-03-29 10:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found