undef值并打印它

时间:2013-10-02 18:04:35

标签: perl undef

这是我第一次使用Perl。

在Perl线程中,如果上下文是标量,则threads->exit()子例程的返回值为undef

#!/usr/bin/perl
use threads;

$t=threads->create({"context"=>"scalar"},
                    sub { threads->exit();});
$re = $t->join();
print "##################\n";
print "$re\n\n";
print "##################\n";
print (undef) . "TES\n";
print "##################\n"

输出结果为:

##################


##################
##################

为什么在print "$re\n\n";中执行了打印但未在print (undef) . "TES\n";中执行? 即使$reundef

我做了一个测试,以确保$ re未被定义为。

#!/usr/bin/perl
use threads;

$t=threads->create({"context"=>"scalar"},
                    sub { threads->exit();});
$re = $t->join();
print "##################\n";
print "$re\n\n" if ! defined $re;
print "##################\n";
print (undef) . "TES\n";
print "##################\n"

我输出相同的信息。

1 个答案:

答案 0 :(得分:3)

print (undef) . "TES\n";

相同
(print (undef)) . "TES\n";

所以你将print的结果与字符串连接起来。

你想要的是

print ((undef) . "TES\n"); # or print undef() . "TES\n";