I took a look at the "Prototype mismatch" error you describe here (after upgrading to POE version 1.002), and although I'm not running activestate perl, the version of POE I have running on my Apple Mac, shows the following code:
.../POE/Kernel.pm
BEGIN {
...
if ($^O eq 'MSWin32') {
*{ __PACKAGE__ . '::RUNNING_IN_HELL' } = sub { 1 };
} else {
*{ __PACKAGE__ . '::RUNNING_IN_HELL' } = sub { 0 };
}
...
}
.../POE/Resource/FileHandles.pm:
### Some portability things.
# Provide dummy constants so things at least compile. These constants
# aren't used if we're RUNNING_IN_HELL, but Perl needs to see them.
BEGIN {
if (RUNNING_IN_HELL) {
eval '*F_GETFL = sub { 0 };';
eval '*F_SETFL = sub { 0 };';
}
}
I think we'll need to take a peek at your Kernel.pm and FileHandles.pm to see what's going on here. Anybody else have any thoughts on this? In any case, I don't think its part of your original problem (well, not yet anyways).
One other interesting thing is that this same error shows up in the Activestate build here.
-Craig
| [reply] [d/l] |
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. | [reply] [d/l] |
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.
| [reply] |
As a developer of POE, I use whatever's currently in the repository. "Eating my own dog food" is one of the easier methods of quality assurance. The latest CPAN version should be pretty close: I'm releasing earlier and more often than I have been.
I wasn't able to reproduce the problem on Mac OSX. There may be Windows issues at work. There are very good reasons why it's called "running in hell".
| [reply] |
Hi,
I've just installed the latest version OF POE on ActivePerl 5.8.8 and I've got the same errors:
Prototype mismatch: sub POE::Kernel::F_GETFL: none vs () at C:/Perl/site/lib/POE/Resource/FileHandles.pm line 24.
Prototype mismatch: sub POE::Kernel::F_SETFL: none vs () at C:/Perl/site/lib/POE/Resource/FileHandles.pm line 25.
I tested it with the sample given in the POE perldoc.
I don't have this with a previous version.
May you help?
Cheers,
Sebastien
| [reply] |