Skip Menu |

Preferred bug tracker

Please visit the preferred bug tracker to report your issue.

This queue is for tickets about the DateTime-TimeZone CPAN distribution.

Report information
The Basics
Id: 14874
Status: resolved
Priority: 0/
Queue: DateTime-TimeZone

People
Owner: Nobody in particular
Requestors: perlbug [...] mikeandbev.org
Cc:
AdminCc:

Bug Information
Severity: Important
Broken in: 0.36
Fixed in: (no value)



Subject: _find_matching_zoneinfo_file returns filename only, causing _from_etc_localtime to fail
DateTime::TimeZone version 0.36 Perl version 5.005_03 FreeBSD 4.10 On line 151 of my version of DateTime::TimeZone::Local, the variable $real_name is assigned the value of $_ in the subroutine _find_matching_zoneinfo_file. On my system, that is only the filename without any directory component. Thus a timezone of "America/Los_Angeles" only assigns the value "Los_Angeles" to $real_name. When it gets back up into _from_etc_localtime, "Los_Angeles" is not a valid time zone and therefore DateTime::TimeZone->new() fails on line 71. To fix this, I modified line 151 to read: $real_name = $File::Find::name; This returns the file path in $real_name, ultimately ending up with the correct timezone of "America/Los_Angeles" in _from_etc_localtime. I have not tested version 0.37, but it appears the line in question has not changed in that version. My version of File::Find does not seem to contain a version number.
On Sun Oct 02 01:19:51 2005, guest wrote: Show quoted text
> DateTime::TimeZone version 0.36 > Perl version 5.005_03 > FreeBSD 4.10 > > On line 151 of my version of DateTime::TimeZone::Local, the variable > $real_name is assigned the value of $_ in the subroutine > _find_matching_zoneinfo_file. On my system, that is only the > filename without any directory component. Thus a timezone of > "America/Los_Angeles" only assigns the value "Los_Angeles" to > $real_name. When it gets back up into _from_etc_localtime, > "Los_Angeles" is not a valid time zone and therefore > DateTime::TimeZone->new() fails on line 71. > > To fix this, I modified line 151 to read: > > $real_name = $File::Find::name; > > This returns the file path in $real_name, ultimately ending up with > the correct timezone of "America/Los_Angeles" in > _from_etc_localtime. > > I have not tested version 0.37, but it appears the line in question > has not changed in that version. > > My version of File::Find does not seem to contain a version number.
This should have been fixed a while back when I changed the code to call File::Find with the no_chdir option. In that case, the value of $_ and $File::Find::name should be the same inside the callback, per the File::Find docs. However, that change was back in 0.2507. Are you still seeing this problem?