变量在没有赋值之前,它就是未定义的,可以说它的初始值就是特殊的 undef ,它表示 “什么都没有” 。对于数字型变量来说,此时该变量会被假设是 0;如果对于字符串变量来说,那么该变量会被假设为空字符串。所以,undef 既不是数字也不是字符串。比如:
[code=perl]
#!/usr/bin/perl
$n = 3;
$sum = $n + 2;
$str .= "add some text";
print "value of sum is $sum. \n";
print "value of str is \"$str\". \n";
[/mw_shl_code]
运行输出:./defined.pl
value of sum is 5.
value of str is "add some text". 这里,整型变量 $n 被认为是 0。而字符串型变量 $str 则被认为是空字符串,所以在用 '.' 字符连接另外一个字符串时也就相当于给它赋值了该字符串。
许多操作符不合理或参数越界时也会返回 undef 。
defined 函数可以用来判断一个变量是否为 undef 。该函数返回一个布尔值,如果变量为 undef ,则返回假,否则返回真。下面示例说明这种情况:
[Perl] 纯文本查看 复制代码 #!/usr/bin/perl
$data = <STDIN>;
if (defined($data)) {
print "The input was $data \n";
} else {
print "No input available!\n";
}
上面程序中的 “行输入” 操作符 <STDIN> 一般情况下返回你输入的文字,但如果没有更多的输入时,它就返回 undef 。比如运行上面的程序后,你输入 ctrl + d 表示直接结束输入时,该程序会打印出 "No input available!" 。 |