1

这是我第一次使用 Perl。

在 Perl 线程中,如果上下文是标量,则threads->exit()子例程的返回值为 value。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 中执行但不在 in 中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"

我去同样的输出。

4

1 回答 1

3
print (undef) . "TES\n";

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

所以你print用字符串连接结果。

你想要的是

print ((undef) . "TES\n"); # or print undef() . "TES\n";
于 2013-10-02T18:08:54.443 回答