Reputation: 99
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
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