http://www.perlmonks.org?node_id=784249


in reply to boolean chaining - && and 'and'

In risk_eval, you spelled it "age_22", but in _build_risk_type, it's spelled "age22". That means that when you get around to testing the condition, $E{age22} is undef (false). I discovered this by using the debugger.

As an aside, having variables named $E and %E in the same place is somewhat confusing.