2010-08-05 4 views
0

perl에서 날짜의 서식을 지정하는 방법을 알아 내려고 도움이 필요합니다. perl 도움말에서 적절한 날짜 형식을 찾을 수 있습니다.

my $mon = 'Aug'; 
my $day = '05'; 
my $year = '2010'; 

이 바르

이 같은 정규 표현식에 사용되는 : 나는 하드 같은 날짜 문자열을 코딩 사용하는 경우 잘 작동 정규 표현식으로, 작업 펄 스크립트가

if ($line =~ m/(.* $mon $day) \d{2}:\d{2}:\d{2} $year: ([^:]+):backup:/) 

이제이 날짜 부분을 자동화하고 현재 날짜를 체계적으로 사용해야합니다. perl localtime을 살펴 보았고 unix 날짜를 사용하여 변수에 넣으려고했습니다. 일주일에 한자리 숫자를 '0'으로 채워야합니다. 오늘처럼, 'Aug' '05' '정규식에 사용하는 입력 파일에 이와 같은 날짜가 있기 때문에'2010 '입니다. 유닉스 및 서식

내 두 번째 시도는 숫자를 반환되지만,이를 문자열 수 있어야합니다 :

my $mon2=`date '+%b'`; 
my $day2=`date '+%d'`; 
my $year2=`date '+%Y'`; 

날짜 형식으로 재생에 대한 나의 테스트 코드 :

#!/usr/local/bin/perl -w 

use strict; 

my $mon = 'Aug'; 
my $day = '05'; 
my $year = '2010'; 

my $mon2=`date '+%b'`; 
my $day2=`date '+%d'`; 
my $year2=`date '+%Y'`; 

print "$mon"; 
print "$day"; 
print "$year"; 

print "$mon2"; 
print "$day2"; 
print "$year2"; 

내 출력 :

Aug052010Aug 
05 
2010 

답변

6

나는 당신에게 그것을 어기는 것을 싫어하지만 바퀴를 다시 만들고 있습니다. 이 모든 DateTime 유통에 상당히 포괄적으로 구현되는 클래스의 DateTime::Format:: 가족 :

use DateTime; 
my $dt = DateTime->now; 
print 'It is currently ', $dt->strftime('%b %d %H:%M:%S'), ".\n"; 

인쇄 :

 
It is currently Aug 05 23:54:01. 
+4

그리고 당신은 멋진 비록 몇 가지 이유 (위해 날짜 시간을 설치하지 않는 경우) 표준'POSIX' 모듈에서'strftime' 함수를 사용할 수 있습니다. – friedo

+0

감사합니다! 매우 유용한 정보. – jdamae

관련 문제