首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl发布了DateTime::Format::issue 8601,跟踪到Params::issue?

Perl发布了DateTime::Format::issue 8601,跟踪到Params::issue?
EN

Stack Overflow用户
提问于 2012-02-07 15:11:47
回答 1查看 587关注 0票数 2

希望有人能对此有所了解.

我和团队中的许多其他开发人员在内部运行perl应用程序方面具有很大的规模。尽管所有这些都很好,但在每个人的笔记本电脑(linux和mac)上,我都不能在家里的大PC上运行。

我已经通过cpan安装了所有的依赖项,但是在访问站点时,我在apache错误日志中得到了以下内容:

代码语言:javascript
复制
The 'regex' parameter ("(?x-ism:^ (\d{4}) (\d\d) (\d\d) $)") to DateTime::Format::Builder::Parser::create_single_parser was an 'unknown', which is not one of the allowed types: scalarref
 at /usr/local/lib/perl/5.12.4/Params/ValidatePP.pm line 651
    Params::Validate::__ANON__('The \'regex\' parameter ("(?x-ism:^ (\d{4}) (\d\d) (\d\d) $)"...') called at /usr/local/lib/perl/5.12.4/Params/ValidatePP.pm line 491
    Params::Validate::_validate_one_param('Regexp=REGEXP(0x7f8a3aad06e8)', 'HASH(0x7f8a3aaea840)', 'HASH(0x7f8a3aa75aa8)', 'The \'regex\' parameter ("(?x-ism:^ (\d{4}) (\d\d) (\d\d) $)")') called at /usr/local/lib/perl/5.12.4/Params/ValidatePP.pm line 353
    Params::Validate::validate('ARRAY(0x7f8a3aa33808)', 'HASH(0x7f8a3aa32db8)') called at /usr/local/share/perl/5.12.4/DateTime/Format/Builder/Parser.pm line 312
    DateTime::Format::Builder::Parser::create_single_parser(undef, 'params', 'ARRAY(0x7f8a3aad0640)', 'length', 8, 'regex', 'Regexp=REGEXP(0x7f8a3aad06e8)') called at /usr/local/share/perl/5.12.4/DateTime/Format/Builder/Parser.pm line 504
    DateTime::Format::Builder::Parser::sort_parsers('DateTime::Format::Builder::Parser', 'HASH(0x7f8a3aa4e2b8)', 'ARRAY(0x7f8a3aa3f148)') called at /usr/local/share/perl/5.12.4/DateTime/Format/Builder/Parser.pm line 398
    DateTime::Format::Builder::Parser::create_multiple_parsers('DateTime::Format::Builder::Parser', 'HASH(0x7f8a3aa4e2b8)', 'HASH(0x7f8a3aad06b8)', 'HASH(0x7f8a3aad0808)', 'HASH(0x7f8a3aad0910)', 'HASH(0x7f8a3aad0a00)', 'HASH(0x7f8a3aad0b08)', 'HASH(0x7f8a3aad0cb8)', 'HASH(0x7f8a3aad0e50)', ...) called at /usr/local/share/perl/5.12.4/DateTime/Format/Builder/Parser.pm line 603
    DateTime::Format::Builder::Parser::create_parser('DateTime::Format::Builder::Parser', 'ARRAY(0x7f8a3a72fc88)', 'HASH(0x7f8a3aad06b8)', 'HASH(0x7f8a3aad0808)', 'HASH(0x7f8a3aad0910)', 'HASH(0x7f8a3aad0a00)', 'HASH(0x7f8a3aad0b08)', 'HASH(0x7f8a3aad0cb8)', 'HASH(0x7f8a3aad0e50)', ...) called at /usr/local/share/perl/5.12.4/DateTime/Format/Builder.pm line 158
    DateTime::Format::Builder::create_parser('DateTime::Format::Builder', 'ARRAY(0x7f8a3aae5450)') called at /usr/local/share/perl/5.12.4/DateTime/Format/Builder.pm line 177
    DateTime::Format::Builder::create_end_parser('DateTime::Format::Builder', 'ARRAY(0x7f8a3aae5450)') called at /usr/local/share/perl/5.12.4/DateTime/Format/Builder.pm line 106
    DateTime::Format::Builder::create_class(undef, 'parsers', 'HASH(0x7f8a3aae8f18)') called at /usr/local/share/perl/5.12.4/DateTime/Format/ISO8601.pm line 175

我已经将一些点点头的print STDERR直接插入到ValidatePP.pm中,所以如果您查看行号,并且它们略显突出,但基本上在ValidatePP.pm中,它将进入sub _get_type中的下面的代码块。

代码语言:javascript
复制
 # I really hope this never happens.
 return UNKNOWN;

如果有帮助,那么在此PC上运行perl -v将返回以下版本

这是perl 5,版本12,subversion 4 (v5.12.4),它是为x86_64-linux-gnu-多线程构建的。

有人吗?

更新:

如果有帮助,子例程_get_type基本上就是决定(使用UNIVERSAL::isa)如果以下情况下regex: !!perl/regexp (?x-ism:^ (\d{4}) (\d\d) (\d\d) $)不是一个:

代码语言:javascript
复制
my %isas = (
        'ARRAY'  => ARRAYREF,
        'HASH'   => HASHREF,
        'CODE'   => CODEREF,
        'GLOB'   => GLOBREF,
        'SCALAR' => SCALARREF,
    );
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-07 16:44:45

首先,您使用的是最新版本的Params::验证 (以及所有其他模块)吗?根据变化量g,P::v1.01中有一些bug:

1.02 2012-02-06

  • 以前的版本从未加载XS实现,即使它已经编译过。
  • 对于较新版本的Perl,纯Perl实现处理regexp对象的方式与XS实现不同。为了向后兼容,应该将它们视为属于SCALARREF类型。
  • 这两个bug结合在一起,成功地破坏了CPAN上许多模块的测试套件。这个版本应该可以修复它们。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9178687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档