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


in reply to Re: checking values of variables
in thread checking values of variables

I guess that would not work, because the OP apparently wants to trigger the help function if any of the variables is absent, not if they are all missing.

So using a hash, it would have to be something like this:

help() if 22 > scalar values %params; # scalar unnecessary, just to make the context clearer

But that would not be very robust, for example if the %params may have some elements other that the list of mandatory parameters.

So an approach more reliable than just counting the hash values would be to test each and every single mandatory param:

for (qw / server database user password ... initversion /) { help() and last unless (defined $params{$_} and $params{$_}); }

The exact test on the %params values would depend on how the hash is initialized.