2012-02-07 8 views
2

誰かがこれにいくつかの光を当てることを望みます...Peramsの問題:DateTime :: Format :: ISO8601がParams :: Validateで問題を追跡しましたか?

私は、チーム内の多くの他の開発者は、自宅のperlアプリケーションを実行している大規模な。これにもかかわらず、すべてのラップトップ(LinuxとMac)の間でうまく動作していますが、私の人生では私の自宅の大きなPCでこれを実行することはできません。

私はCPAN経由ですべての依存関係をインストールしましたが、私は、サイトを訪れたときにApacheのエラーログに次のようになっています

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 

私は直接に、いくつかのnoddyでprint STDERRさんが立ち往生しましたそうValidatePP.pmあなたは行番号を見ていると、彼らが少し出ているが、基本的ValidatePP.pmで、それはsub _get_typeに次のコードブロックになっている場合:それはfolloを返す-v Perlを実行している、助け場合

# I really hope this never happens. 
return UNKNOWN; 

このPC上の翼バージョン

これは、Perl 5、バージョン12、 x86_64版 - のlinux-gnuのスレッドのマルチ

誰のために建て転覆4(v5.12.4)ですか?

UPDATE:

それが助け場合は、サブルーチン_get_typeは、基本的には、以下の場合regex: !!perl/regexp (?x-ism:^ (\d{4}) (\d\d) (\d\d) $)が1ではないこと(UNIVERSAL::isaを使用して)決定されます。すべての

my %isas = (
     'ARRAY' => ARRAYREF, 
     'HASH' => HASHREF, 
     'CODE' => CODEREF, 
     'GLOB' => GLOBREF, 
     'SCALAR' => SCALARREF, 
    ); 
+0

問題を引き起こすコードを提供した場合に役立ちます。 – ikegami

+0

コードベースは巨大ですが、エラーをスローする "USE DateTime :: Format :: ISO8601"に変わります – devrooms

答えて

1

まず、あなたは最新バージョンを使用していますParams::Validate(および他のすべてのモジュール)?

1.02 2012-02-06

  • それは されていた場合でも、以前のリリースでは、XS実装をロードされることはありません: はchangelogによるPにおけるいくつかのバグ:: V 1.01がありましたコンパイルされた。

  • Perlの新しいバージョンでは、純粋なPerl実装は、正規表現 オブジェクトをXS実装とは異なる方法で扱いました。下位互換性のため、SCALARREFタイプに属する として扱う必要があります。

  • これらの2つのバグを組み合わせると、CPANの モジュールのテストスイートが破損することがありました。このリリースで修正されるはずです。

+0

あなたは正しいかもしれないと思います - 私の問題のように聞こえるかもしれません。新しいバージョンは数日前にリリースされました - 私は今日後で私のバージョンをチェックし、それをアップグレードしようとする - うまくいけばあなたは正しい! – devrooms

+0

yibeありがとうございました。そのモジュールをアップグレードすると修正されました。私は今非常にばかげて感じる:( – devrooms

関連する問題