in reply to Use of uninitialized value
I get those warnings (with use warnings in effect). The problem comes from this loop.
my @lnPAM1=(); LINE: for (my $i=0; $i<20; $i++){ for (my $j=0; $j<20; $j++){ if ($matrix[$i][$j] > 0){ $lnPAM1[$i][$j] = log $matrix[$i][$j]; }else{ next LINE; } } }
When a matrix element equals zero, that value of @lnPAM1 remains undefined, and that undefined value is being used at line 64.
$lnPAM1[$i][$j]= ($lnPAM1[$i][$j]) /($mutrate*100);
For instance, $lnPAM1[0][17] and $lnPAM1[0][18] are undef. To avoid the warnings, you'll need to either assign some value to all of them or exclude matrix elements which are undef from executing line 64.
In Section
Seekers of Perl Wisdom