From: Nick C. <ni...@cl...> - 2002-04-30 16:45:37
|
On Tue, Apr 30, 2002 at 09:38:05AM -0400, Paul Roub wrote: > This came up on the support list this morning. > > Any thoughts, positive or negative, on adding an extended config operation > to support locales, at least for dates? They should be present in any > standard 5.004 or later Perl install. I realize locales are troublesome, > but in this limited context they could be quite useful. > > We could simply have a (normally '' or undef) $locale variable. If defined > and nonempty, we setlocale as appropriate. If setlocale() fails, we could > warn, fatal, log, ignore, whatever. That would be nice, and Harry isn't the first user to ask for it either. > > If the proper locale support is installed on your system (see the locale or > setlocale man pages), the following might work for you: > > Change the line that reads: > > use POSIX qw(strftime); > to > > use POSIX qw(strftime locale_h); > use locale; Perl 5.00404 doesn't like that: ":locale_h" is not exported by the POSIX module at /home/nick/nms/test-results/.tmp/cgi-bin/FormMail.pl line 7 so we would have to expand the 'use' into a BEGIN block that only tries for locale_h if they've set $locale: BEGIN { require POSIX; if ($use_locale) { import POSIX qw(strftime locale_h); require locale; import locale; } else { import POSIX qw(strftime); } } > > Then change: > > my $date = strftime($date_fmt, localtime); > > to > > setlocale(LC_TIME, 'no_NO'); > my $date = strftime($date_fmt, localtime); > So we could have: setlocale(LC_TIME, $locale) if $locale; my $date = strftime($date_fmt, localtime); If we're going to be using locale, we'll need to find all the places where \w is used in regexps and decide whether or not to change each one to [A-Za-z0-9_]. -- Nick |