developer
developer

Reputation: 99

after upgrade perl from 5.16.3 to 5.28.1 facing issue in time locale output

After upgrading perl from 5.16.3 to 5.28.1. DefaultLocale function of DateTime.pm is giving different output compare to 5.16.3

locale command gives the following output

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 gives output

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

whereas perl 5.16.3 output was

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

Upvotes: 0

Views: 171

Answers (1)

ikegami
ikegami

Reputation: 386501

You shouldn't be testing for the class name. Perhaps you should be testing the code returned by 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];

Output:

DateTime::Locale::FromData
de-DE
Montag

Upvotes: 1

Related Questions