http://qs1969.pair.com?node_id=1048975


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.