2013-10-02 41 views
1

這是我第一次使用Perl。undef值並打印它

在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" 

和我去相同的輸出。

回答

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

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

所以你串聯的print用繩子結果是一樣的。

你想要的是

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

呀,非常感謝。 –

+1

或者只是'打印undef。 「TES \ n」;':) – friedo

+1

@friedo'警告:使用不帶括號的「undef」是不明確的......' –