2013-07-24 1 views
0

DateTime 모듈을 사용하는 스크립트가 있습니다.Activestate Perl 대 POSIX perl에 대한 모든 문제

$time_value = strftime "%F %H:%M:%S %p", localtime; 

: 하나의 환경으로 내 개발을 통합하는 내 움직임의 일환으로 , 나는/리눅스에서

윈도우 7에 이클립스 다음 줄을 Cygwin에서하는 리눅스와 Cygwin에서의 명령 줄에서 변경 한 시간 데이터를 생성 :

2013-07-24 13:46:19 

그러나 이클립스에서,은 ActiveState PERL 환경 (모든 관련 모듈 설치) 내가 얻을 수있는

:

%F %H:%M:%S %p 

이상한 점은 그것이 똑같은 스크립트 파일이라는 것입니다. 두 환경 모두에 설치된 DateTime 모듈을 사용하고 있지만이 출력은 모듈에 오류가 있음을 나타냅니다.

지식이있는 PERL 전문가의 의견이 있으십니까?

UPDATE : 2010년 (수) 18시 22분 8월 7일 : How can I parse a strftime formatted string in Perl?

내 목표는이 형식으로 날짜를 변환하는 것입니다 :이 답변에 제안

내가 POSIX QW (의 strftime)를 사용하고 있습니다 : 30 -0600

다수의 MySQL date_format 형식 중 하나.

그래서 POSIX가 프로그램을 이식 불가능하게 만들면 내 옵션은 무엇입니까?

+1

strftime은 POSIX 모듈에서 왔으며 localtime은 표준 Perl 함수입니다. – user4035

+1

우리는 당신이 이미 ['perlport'] (http://search.cpan.org/perldoc?perlport)를 공부했다는 사실을 알고 싶습니까? – mob

+0

나는 perlport에 익숙하지 않다. 저는 작은 프로젝트를 시도하여 스스로를 가르치므로 자원에 대한 제안이나 요령을 높이 평가할 것입니다. –

답변

3

사용중인 strftime 기능은 DateTime 모듈에서 가져온 것이 아닙니다. 이 모듈은 순전히 객체 지향적이며 메서드를 사용합니다 : $dt->strftime($format).

strftime from the POSIX module을 가져온 것으로 보입니다. 해당 기능의 경우, 이동성에 대한 몇 가지 제한이 만들어집니다 :

[...]이에 대한 자세한 내용과 다른 인수를위한 시스템의 "strftime()"맨 페이지를 참조하십시오.

코드를 이식 가능하게하려면 형식 ("fmt") 인수는 ANSI C 표준 (C89, 안전하게 재생하기 위해)에 정의 된 변환 지정자 만 사용해야합니다. 이들은 "aAbBcdHIjmMpSUwWxXyYZ%"입니다. 그러나 그때조차도 변환 지정자 중 일부의 결과는 이식 가능하지 않습니다.

%F은 이식 가능한 형식 지정자가 아닙니다.

+0

감사합니다. 도움이됩니다. 아마도 추측 컨대. 이 작업을 수행하는 기본적인 방법으로 이식 가능한 코드를 작성하고 싶습니다. –

+2

위의 대답은 명확하지 않습니다. POSIX를 제거하고 DateTime을 사용하여 이식 가능한 코드를 작성하십시오. – daxim

0

용액은 % F를 % Y- % m- % d로 변화시키는 것이었다.

관련 문제