【发布时间】:2013-10-02 18:04:35
【问题描述】:
这是我第一次使用 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"
然后我得到相同的输出。
【问题讨论】: