после обновления Perl с 5.16.3 до 5.28.1 возникла проблема с выходным языком времени - PullRequest
0 голосов
/ 07 июня 2019

После обновления Perl с 5.16.3 до 5.28.1.Функция DefaultLocale в DateTime.pm дает другой вывод по сравнению с 5.16.3

команда locale дает следующий вывод

LANG=de_DE.utf8
LC_CTYPE="de_DE.utf8"
LC_NUMERIC="de_DE.utf8"
LC_TIME="de_DE.utf8"
LC_COLLATE="de_DE.utf8"
LC_MONETARY="de_DE.utf8
LC_MESSAGES="de_DE.utf8"
LC_PAPER="de_DE.utf8"
LC_NAME="de_DE.utf8"
LC_ADDRESS="de_DE.utf8"
LC_TELEPHONE="de_DE.utf8"
LC_MEASUREMENT="de_DE.utf8"
LC_IDENTIFICATION="de_DE.utf8"
LC_ALL=
use warnings;
use strict;
use Carp;
use Data::Dumper;
use Time::Local;
use Params::Validate qw(:all);
use DateTime;
use DateTime::TimeZone;
use POSIX qw(setlocale LC_TIME);

my $locale = setlocale(LC_TIME);
DateTime->DefaultLocale($locale);
print "Time locale :",DateTime::DefaultLocale;

perl 5.28.1 дает вывод

Time locale :DateTime::Locale::FromData=HASH(xxxxxx)

, тогда как выход Perl 5.16.3 был

Time locale :DateTime::Locale::de_DE=HASH(xxxxx)

1 Ответ

1 голос
/ 07 июня 2019

Вы не должны проверять имя класса. Возможно, вам следует протестировать код, возвращаемый DateTime->DefaultLocale->code?

use strict;
use warnings;
use feature qw( say );

use DateTime qw( );

DateTime->DefaultLocale('de_DE.utf8');

my $locale = DateTime->DefaultLocale;
say ref($locale);
say $locale->code;
say $locale->day_stand_alone_wide->[0];

Выход:

DateTime::Locale::FromData
de-DE
Montag
...