求教一个问题

求教一个问题

求教一个问题
一段小代码

use threads qw(async);
my $alarmFlag = 0;
$|=1;
$SIG{__WARN__} = sub{ $alarmFlag = 1; };

async {
Win32::Sleep 3000;
warn "warn";
print $alarmFlag;
};

while(!$alarmFlag) {
print 'Waiting for the alarm at ', scalar localtime;
print "\n".$alarmFlag."\n";
sleep 1;$i++;
last if $i==5;
}

print "$alarmFlag....The alarm was raised\n";


为什么最后输出的是 0....The alarm was raised,$alarmFlag不是已经变成1了吗?。。。
极度郁闷啊,为什么async .
极度郁闷啊,为什么async {}里修改的全局变量到了外面怎不影响了

[CCB]10[/CCB][CCB]10[/CCB][CCB]10[/CCB]
发现用threads::share可以.
发现用threads::share可以解决。。