in reply to Testing array of hash values
It looks like this is intended to be a CGI, and yet it doesn't emit the correct response header, so I'll assume this is just a code fragment.
What, exactly, do you expect @p{'eyes', 'hair', 'etc'} =(); to do? It rather looks like a syntax error to me. If you're trying to pre-load a hash with keys, you might try
But that begs the question of what your do_print is trying to do, since @p{ 'eyes', 'hair', 'etc' } results in a three element array, with each element being undef. Assuming that you're trying to return the heading if and only if any one of the elements is present, you could domy %p; $p{$_} = undef for qw(eyes hair etc);
sub do_head { my($heading, @data) = @_; return "<h4>$heading</h4>" if grep { defined($_) } @data; return ""; }
In Section
Seekers of Perl Wisdom