Which is weird because dumpbin shows strftime() being imported from the right place.
Yes - it's being imported from the right place .... therefore we deduce that the timezone is not being set as intended. I added 3 warn() messages to the relevant section of the 02core.t script. It now looks like:
SKIP: {
skip "can't register TZ changes in a pseudo-fork", 2 if $is_pseudo
+_fork;
use POSIX;
warn "1 POSIX::strftime: ", POSIX::strftime("%Z\n", localtime);
local $ENV{TZ} = "EST5";
warn "2 POSIX::strftime: ", POSIX::strftime("%Z\n", localtime);
Time::Piece::_tzset(); # register the environment change
warn "3 POSIX::strftime: ", POSIX::strftime("%Z\n", localtime);
my $lt = localtime;
cmp_ok(scalar($lt->tzoffset), 'eq', '-18000');
cmp_ok($lt->strftime("%Z"), 'eq', 'EST');
}
Using VC 7 and a perl-5.10.0 built by VC 7 everything works fine and the modified script outputs (as desired):
.
.
ok 37
1 POSIX::strftime: AUS Eastern Daylight Time
2 POSIX::strftime: EST
3 POSIX::strftime: EST
ok 38
ok 39
ok 40
.
.
But using VC 7 with ActivePerl-5.10.1 (or with ActivePerl-5.10.0), the output becomes:
.
.
ok 37
1 POSIX::strftime: AUS Eastern Daylight Time
2 POSIX::strftime: AUS Eastern Daylight Time
3 POSIX::strftime: AUS Eastern Daylight Time
ok 38
not ok 39
# Failed test at t/02core.t line 65.
# got: ''
# expected: 'EST'
ok 40
.
.
Apparently for this test to work with MSVC++ 7.0 on a perl built by MSVC++ 6, the Time::Piece authors need to devise a way of getting the change to $ENV{TZ} reflected in the right place so that their strtftime call can detect it.
Cheers, Rob |