1

谁能解释变量作用域在 POE 会话中是如何工作的?在不影响其他会话的情况下,在会话中传递状态的正确方法是什么?

谢谢乔什

4

1 回答 1

4

范围不受 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"
}
于 2009-07-01T14:49:07.763 回答