Perl 我需要使用定义的吗?

Perl 我需要使用定义的吗?,perl,Perl,这两种方法之间有什么区别吗: print "Undefined\n" unless defined $test; 及 对 如果$test为undef,则打印未定义 print "Undefined\n" unless $test; 如果$test为undef或$test==0或$test eq'',则打印未定义的值数字0、字符串“0”和空字符串('')均已定义,但为false。如果在运行代码时将$test设置为这三个值中的任何一个,您将看到差异 defined测试检查是否定义了值。定义的变量

这两种方法之间有什么区别吗:

print "Undefined\n" unless defined $test;

如果
$test
undef
,则打印未定义

print "Undefined\n" unless $test;

如果
$test
undef
$test==0
$test eq'',则打印未定义的值
数字0、字符串“0”和空字符串('')均已定义,但为false。如果在运行代码时将
$test
设置为这三个值中的任何一个,您将看到差异

defined
测试检查是否定义了值。定义的
变量已给定值。任何价值。即使是假的


(好的,不是值
undef

您可以通过解释Perl中定义和真值之间的差异来改进您的答案。还要注意的是,虽然字符串“0”为false,但字符串“00”为true(并且两者都
==0
)。最后一行更好的写法是:如果
$test eq“0”
(包括数字0)或
$test eq'
(包括
unde
)。
print "Undefined\n" unless defined $test;
print "Undefined\n" unless $test;