2013-09-24 5 views
8

Sono l'autore del modulo Mac::PropertyList che analizza il formato elenco delle proprietà Apple. L'ho progettato per funzionare su diverse piattaforme, ma ho problemi con la funzione strftime di che utilizzo per creare i campi data nel formato specificato da Apple.Perché l'identificatore POSIX :: strftime% F di Perl non funziona su Windows?

use POSIX; 
print 'Epoch is: ' . POSIX::strftime("%FT%H:%M:%SZ\n", gmtime(978307200)); 

Sulle piattaforme Unix-like, tra cui Darwin, questa chiamata produce il giusto tipo di data:

2013-09-23T12:34:56Z 

In Windows, produce:

T12:34:56Z 

Questo è stato segnalato come CPAN RT #83460 . Cosa sta succedendo con Windows qui?

risposta

12

Mentre stavo scrivendo questa domanda e facendo ricerche su tutto, ho trovato la mia risposta. Però non voglio che tutto ciò funzioni vada sprecato però.

Il formato %F che ho usato non è portabile, e il modulo POSIX dice nella sua entrata strftime:

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%". 

%F è davvero %Y-%m-%d, quindi dovrei usare quella.

Il mio problema particolare è che io so che il modulo POSIX ti dice quale formato prescrittori è possibile utilizzare per essere portatile, ma devo ancora guardare la pagina strftime uomo a vedere quello che fanno. Nel guardare la pagina man, dimentico di controllare quali sono portatili.

Problemi correlati