原型不匹配:sub POE :: Kernel :: F_GETFL()vs none(eval 33)第1行

时间:2014-04-03 19:50:54

标签: perl

我收到错误

  

原型不匹配:sub POE :: Kernel :: F_GETFL()vs none(eval 33)第1行

尝试使用eclipse在Windows 7中运行perl代码。我在perl代码中使用了POE模块。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我看到了RUNNING_IN_HELL并想知道它来自哪里:

BEGIN {
   local $SIG{'__DIE__'} = 'DEFAULT';

    {
         no strict 'refs';
         if ($^O eq 'MSWin32') {
            *{ __PACKAGE__ . '::RUNNING_IN_HELL' } = sub { 1 };
         } else {
            *{ __PACKAGE__ . '::RUNNING_IN_HELL' } = sub { 0 };
         }
    }
}

所以,他正在定义一个名为RUNNING_IN_HELL的常量,如果在Windows上运行,则设置为 true

我看到很多检查确保您拥有特定版本的Perl和各种模块。它看起来像旧的版本的Perl 5.10之前版本可能不稳定。在Windows上运行时将任何名为RUNNING_IN_HELL的常量定义为true的模块可能在Windows中存在某些问题。

我建议与该模块的作者Rocco Caputo取得联系并与他讨论该模块的内部工作原理以及为什么会出现这些错误。这可能只是他没有检查的条件。

即使这样,您也必须显示一些源代码。你必须解释 正在做什么, 如何设置对模块的调用,以及什么版本的Perl 正在使用 为缩小问题所做的工作。