in reply to scalar grep not binding hash slots

You've got TWO problems. You need to limit the arguments to the grep(), and you need to use an array reference, not a list, as the value of the 'driver' key in the hash. In fact, by doing the second one, you do the first.
my %hash = ( driver => [ grep $p{rdbms} eq $_, Alzabo::Driver->available ], rules => scalar(grep $p{rdbms} eq $_, Alzabo::RDBMSRules->available +) ? 'yes' : 'no', rules2 => scalar(grep $p{rdbms} eq $_, Alzabo::RDBMSRules->available +), );

_____________________________________________________
Jeff[japhy]Pinyan: Perl, regex, and perl hacker, who'd like a job (NYC-area)
s++=END;++y(;-P)}y js++=;shajsj<++y(p-q)}?print:??;