谁能解释变量作用域在 POE 会话中是如何工作的?在不影响其他会话的情况下,在会话中传递状态的正确方法是什么?
谢谢乔什
范围不受 POE 的影响。
您可以使用 POE 的堆(可通过 访问$_[HEAP]
)在各种处理程序之间传递数据。
根据文档,默认情况下会话之间的堆是不同的,但可以覆盖它,以便不同的会话共享一个堆。
sub my_state_handler {
$_[HEAP]{some_data} = 'foo';
$_[KERNEL]->yield('another_handler');
}
sub another_handler {
print $_[HEAP]{some_data}, "\n"; # prints "foo\n"
}