2009-06-30 58 views

回答

4

作用域是通過POE不受影響。

您可以使用POE的堆(可通過$_[HEAP]訪問)在各個處理程序之間傳遞數據。

According to the docs,默認情況下,會話之間的堆是不同的,但可以覆蓋這個,以便不同的會話共享一個堆。

sub my_state_handler { 
    $_[HEAP]{some_data} = 'foo'; 
    $_[KERNEL]->yield('another_handler'); 
} 

sub another_handler { 
    print $_[HEAP]{some_data}, "\n"; # prints "foo\n" 
} 
+0

創建會話時,會使用一個新的散列作爲堆,如您所說。可以在創建會話時手動指定堆:http://search.cpan.org/perldoc?POE::Session#heap_=>_ANYTHING 您可以使用會話堆或數組等的現有散列。 – Hinrik 2010-04-16 12:09:00