Subject: | %T in fmt of POSIX::strftime call in Catalyst::Helper is not portable - causes infinite loop under Win32 |
Catalyst::Helper::_mk_changes calls POSIX::strftime on line 390:
my $time = strftime('%Y-%m-%d %T', localtime time);
the %T parameter causes my Activestate Perl 5.8.8 820 to infinite loop.
In fact,
perl -MPOSIX -e "print POSIX::strftime('%T', localtime time);"
also infinite loops.
Nice.
The perldoc for POSIX states in the strftime notes:
"If you want your code to be portable, your format (fmt ) argument
should use only the conversion specifiers defined by the ANSI C standard
(C89, to play safe). These are aAbBcdHIjmMpSUwWxXyYZ% ."
%T is not in the list. On all the systems I have at my disposal,
%H:%M:%S produces equivalent output and uses only the conversion
specifiers they recommend.
For the sake of saving the next soul who wants to use Catalyst under
Win32, which apparently doesn't like %T, suggest changing to:
my $time = strftime('%Y-%m-%d %H:%M:%S', localtime time);
----------
perl -v
This is perl, v5.8.8 built for MSWin32-x86-multi-thread
(with 50 registered patches, see perl -V for more detail)
Copyright 1987-2006, Larry Wall
Binary build 820 [274739] provided by ActiveState http://www.ActiveState.com
Built Jan 23 2007 15:57:46
-----------
Catalyst-Devel-1.02