if(変数)をやってみた結果

perlでは負の値や空のレファレンスでもif(変数)でtrueと判断されてしまう。

my $one = 1;
my $minus_one = -1;
my $only_declare;
my %empty_hash = ();
my @empty_arr = ();
my $empty_hash_ref = +{};
my $empty_array_ref = +[];

print "one\n" if $one;
print "minus_one\n" if $minus_one;
print "only_declare\n" if $only_declare;
print "empty_hash\n" if %empty_hash;
print "empty_arr\n" if @empty_arr;
print "empty_hash_ref\n" if $empty_hash_ref;
print "empty_array_ref\n" if $empty_array_ref;

=pod
実行結果
one
minus_one
empty_hash_ref
empty_array_ref
=cut