Я впервые использую 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"
и у меня выходит тот же выход.