这是我第一次使用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";
中执行?
即使$re
是undef
。
我做了一个测试,以确保$ 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"
我输出相同的信息。
答案 0 :(得分:3)
print (undef) . "TES\n";
与
相同(print (undef)) . "TES\n";
所以你将print
的结果与字符串连接起来。
你想要的是
print ((undef) . "TES\n"); # or print undef() . "TES\n";