4
2361

perl магия

mishin
2015-05-06 20:56

Есть модуль https://github.com/szabgab/Regexp-Common-time так вот тесты под ubuntu не проходят, но если добавить в тест https://github.com/mishin/Regexp-Common-time/blob/master/t/american.t строчку: use Modern::Perl; то тесты неожиданно начинают проходить. Внимание вопрос: Modern::Perl загружает целую пачку подулей, какой из этих модулей позволяет тесту пройтись?

  • vti
    2015-05-07 03:54 #

    Хотелось бы, конечно, больше информации о том, как валится тест :)

    1
    или CTRL+Enter формат
    • mishinvti
      2015-05-08 22:43 #

      Спасибо за ответ. Валиться обычно: Regexp-Common-time_fail

      И выполняется так: Regexp-Common-time_success в общем это мало о чем говорит

      или CTRL+Enter формат
      • asan_13mishin
        2015-05-09 11:28 #

        Походу дело в feature 'unicode_strings', которую Modern::Perl включает. Она указывает перлу использовать семантику unicode для строковых операций.

        Вот так работает (у меня локаль en_EN.UTF-8, поэтому env LANG=...) :

        env LANG=ru_RU.UTF-8 perl -Mfeature=unicode_strings -Ilib t/american.t
        а вот так нет:
        env LANG=ru_RU.UTF-8 perl -Ilib t/american.t

        У тебя тест выдает ошибки, потому что локаль видимо ru_RU.UTF-8, для месяцев и т.д. возвращаются русские названия, которые потом где то внутрях этих Regexp::Common::* некорректо сравниваются. Где конкретно не знаю, не понял навскидку.. но дело в unicode_strings))

        1
        или CTRL+Enter формат
Чтобы ответить, залогиньтесь или зарегистрируйтесь.
  • @user
  • _italic_

    italic

  • **bold**

    bold

  • [PP](http://pragmaticperl.com)

    PP

  • <http://pragmaticperl.com>

    http://pragmaticperl.com

  • module:Plack

    Plack

  • release:URI

    URI

  • author:VTI

    VTI

  • `my $foo = 'bar'`
  • ```
    my $multi;
    $line;
    ```