Ah - really sorry, that is what I'm doing, just in the test I knocked up quickly to demonstrate, I forgot that bit:
my $tz_name = "Europe/London"; printf( "Is %s valid? %d\n", $tz_name, DateTime::TimeZone::is_valid_name( $tz_name ) ); # Still prints Is Europe/London valid? 0 Apologies....! On 1 June 2015 at 13:14, Eric Brine <ikeg...@adaelis.com> wrote: > The proper usage is > > DateTime::TimeZone->is_valid_name($name) > > not > > DateTime::TimeZone::is_valid_name > > You need to call it as a method, and you need to pass the name to check. > > > On Mon, Jun 1, 2015 at 8:10 AM, Chris Welch <welch.ch...@gmail.com> wrote: > >> Hi >> >> I'm sure I'm doing something completely stupid, but am baffled with these >> results I'm getting. I'm getting a user to select a timezone and the >> is_valid_name check is *always* coming back false - for my example I'm >> using 'Europe/London', but I've tried a few in different categories with >> the same result. >> >> Testing I've done: >> >> my $timezone_name = "Europe/London"; >> printf( "Is %s valid? %d\n", $tz_name, DateTime::TimeZone::is_valid_name >> ); # Prints Is Europe/London valid? 0 >> >> This is in contrast to my own tests, where I mimic what is_valid_name is >> doing: >> >> my $tz = try { >> local $SIG{__DIE__}; >> DateTime::TimeZone->new( name => $tz_name ); >> }; >> >> print $tz && $tz->isa('DateTime::TimeZone') ? 1 : 0; # Prints 1 >> >> I can't see why one would print 1 and the other 0, as as far as I can >> tell, they're essentially doing the same thing - but there must be >> *something* different! Obviously I could use my test in the production >> environment, but then I still wouldn't understand why the results are >> different and aside from the fact that I'd like to understand why, that may >> lead to unexpected results in future. >> >> Thanks >> >> >> Chris >> > >