perlquestion
legLess
Monks ~
<P>Two questions here:
<OL>
<LI>Why doesn't this work like I expect ("false expectations" is my best answer, but it isn't helping me),
<LI>Is there a better way to do what I'm attempting?
</OL>
<P>I want to format and display a heading iff that heading's children contain data.
<CODE>
#!/usr/bin/perl -T
use strict;
use warnings;
# prints nothing, as expected
print do_head( "Empty" );
# prints "<H4>Appearance</H4>"; wish it didn't
my @p{ 'eyes', 'hair', 'etc' } = ();
print do_head( "Appearance", @p{ 'eyes', 'hair', 'etc' });
#------------------------------------------------
sub do_head {
my $heading = shift;
my @data = @_;
return "<H4>$heading</H4>" if @data;
}
</CODE>
<P>I expected the <B>do_head</B> sub to put an empty list into <B>@data</B>; said list would then evaluate as false in a scalar context. This doesn't work, of course, which is why I'm here. I'm sure this is based on my faulty understanding of arrays and hashes. I've re-read the Camel on this subject and not attained enlightenment. Help?
<P>Thanks
<BR>--<BR><I>man with no legs, inc.</I>