Class methods work by lucky chance rather than deliberate design.
Calling POE::Kernel by class may not work for all methods, and it may
not work in the future. There's no plan to change this, but it may be
a side effect of some (also unplanned) future feature. Or it may
become officially supported, in which case you'll see it in the docs.
The $poe_kernel export (or $POE::Kernel::poe_kernel) is mainly for
libraries that may not get POE::Session's usual callback parameters.
--
Rocco Caputo - rcap...@pobox.com
On Jun 25, 2009, at 22:38, Mark Swayne wrote:
Bruce Ferrell wrote:
is there a difference between:
POE::Kernel->post()
and
$poe_kernel->post()
Bruce,
In case you haven't found it yet, they are (basically) the same.
$poe_kernel is exported by POE::Kernel. It's a reference to the
Kernel singleton.
Calling $poe_kernel->post, calls the post method on the $poe_kernel
object. While POE::Kernel->post, is using a hard coded class name.
The only place I'd expect a difference, is if you start working with
a subclass of POE::Kernel that overrides the post method. Then all
your POE::Kernel calls will create chaos. (Or maybe if a future
version of post breaks without an object reference, like ID).
The examples for post use $_[KERNEL] to access the kernel object.
Out of distrust for exported globals, I'd do as in the docs, and use
$_[KERNEL].
http://search.cpan.org/dist/POE/lib/POE/Kernel.pm#$poe_kernel
http://search.cpan.org/dist/POE/lib/POE/Kernel.pm#post_DESTINATION,_EVENT_NAME_
[,_PARAMETER_LIST]
--Mark Swayne