in reply to Re^3: sending data over TCP channel using POE::Component::Server::TCP
in thread sending data over TCP channel using POE::Component::Server::TCP

What I can find in these 2 files is not the same as yours. Here is the code:
../POE/kernel.pm ... { no strict 'refs'; if ($^O eq 'MSWin32') { *{ __PACKAGE__ . '::RUNNING_IN_HELL' } = sub { 1 }; } else { *{ __PACKAGE__ . '::RUNNING_IN_HELL' } = sub { 0 }; } ... .../POE/Resource/FileHandles.pm BEGIN { eval 'F_GETFL'; if ($@) { *F_GETFL = sub () { 0 }; *F_SETFL = sub () { 0 }; }
There's eval 'F_GETFL' come up. This certainly means something but I don't know what it is.
I use windows platform and my version of perl is 5.8.
  • Comment on Re^4: sending data over TCP channel using POE::Component::Server::TCP
  • Download Code

Replies are listed 'Best First'.
Re^5: sending data over TCP channel using POE::Component::Server::TCP
by rcaputo (Chaplain) on Aug 08, 2008 at 20:05 UTC

    The BEGIN block intends to define F_GETFL and F_SETFL as constants if there's an error while evaluating F_GETFL. These constants are used elsewhere in the module, and it's more efficient to make sure they're defined and work rather than to make redundant checks over the lifetime of the program.

    Various versions of Perl for Windows use different prototypes for the F_GETFL and F_SETFL constants, despite the empty prototype being standard for Perl constants.

    POE tracks the latest build rather than try to do the right thing for every version out there. If someone wants to step up and do the necessary diligence, we'll be happy to accept a patch.

    Meanwhile, these warnings are ugly but otherwise harmless.