2011-03-15 77 views
2

當我把我的localeit_IT.UTF-8(出口LC_ALL = it_IT.UTF-8),並運行此腳本使用的語言環境 - 問題

#!/usr/bin/env perl 
use warnings; 
use 5.012; 
use POSIX qw(strftime); 

say strftime "%A %B %e %H:%M:%S %Y", localtime; 

我得到這樣的輸出:

martedì marzo 15 08:50:07 2011 

但閱讀本(從The-use-locale-pragma):

By default, Perl ignores the current locale. The use locale pragma tells Perl to use the current locale for some operations: ... The POSIX date formatting function (strftime()) uses LC_TIME .

爲什麼我的語言環境設置對strftime輸出有影響,而不使用locale編譯指示?

+0

看來'POSIX'和語言環境只是Perl的一個黑暗的角落。另見http://stackoverflow.com/questions/3214418/is-locale-setting-global-in-perl – 2011-03-15 09:22:59

回答

5

POSIX::strftime是一個使用當前語言環境的實際strftime C函數調用的薄包裝器time.h。 Perl沒有經過努力使其符合。

DateTime has a strftime equivalent在Perl中實現,將符合Perl的語言環境編譯指示。