foreach( [black => "NoHit", 'No Hits'], [red => [0]], [orange => ['1e-99', '1e-90']], [gold => ['1e-90', '1e-80']], [yellow => ['1e-80', '1e-70']], [chartreuse => ['1e-70', '1e-60']], [green => ['1e-60', '1e-50']], [turquoise => ['1e-50', '1e-40']], [blue => ['1e-40', '1e-30']], [pink => ['1e-30', '1e-20']], [purple => ['1e-20', '1e-10']], [grey => ['1e-10', '1']]) { my($color, $range, $label) = @$_; my $match; unless(ref $range) { if($match = $score eq $range) { defined $label or $label = $range; } } elsif(@$range == 1) { if($match = $score == $range->[0]) { defined $label or $label = "E = $range->[0]"; } } else { if($match = $score >= $range->[0] && $score < $range->[1]) { defined $label or $label = "$range->[0] < E < $range->[1]"; } } if($match) { $frame = $tab->Label(-bg => $color, -relief => 'sunken', width => 15); $balloon->attach($frame,-balloonmsg => $label); last; } }