펄이든 무슨 언어이든, 날짜와 시간을 처리하는 부분이 번거롭습니다.
제가 어제 날짜에 관계된 펄 프로그래밍을 하려고 했는데, localtime 을 해석하는 부분이 좀 복잡하더군요.
그래서 아예, "Y" 를 넣으면 현재 연도가 나오고, "h" 를 넣으면 현재 시간이 나오는 아주 단순명쾌한 함수를 하나 만들었습니다.
GetTimeStr 이라는 함수입니다.
봉숭아학당에서도 사용할 수 있을 만큼 사용법이 간단합니다.
펄 코드:
#!/usr/bin/perl
use strict; use warnings;
print "Year : ", &GetTimeStr("Y"), "\n";
print "Month : ", &GetTimeStr("M"), "\n";
print "Day : ", &GetTimeStr("D"), "\n";
print "\n";
print "Hour : ", &GetTimeStr("h"), "\n";
print "Min : ", &GetTimeStr("m"), "\n";
print "Sec : ", &GetTimeStr("s"), "\n";
sub GetTimeStr {
return sprintf("%02d", (localtime) [0] ) if $_[0] eq "s";
return sprintf("%02d", (localtime) [1] ) if $_[0] eq "m";
return sprintf("%02d", (localtime) [2] ) if $_[0] eq "h";
return sprintf("%02d", (localtime) [3] ) if $_[0] eq "D";
return sprintf("%02d", (localtime) [4] + 1 ) if $_[0] eq "M";
return sprintf("%04d", (localtime) [5] + 1900) if $_[0] eq "Y";
undef;
}
GetTimeStr("Y") 는 현재 연도를 4자리 숫자로 반환
GetTimeStr("M") 은 현재 달을 2자리 숫자로 반환
GetTimeStr("D") 는 현재 일을 2자리 숫자로 반환
GetTimeStr("h") 는 현재 시간을 2자리 숫자로 반환
GetTimeStr("m") 은 현재 분을 2자리 숫자로 반환
GetTimeStr("s") 는 현재 초를 2자리 숫자로 반환
주의: 대소문자를 구분합니다. 대문자 M 은 '달'이고, 소문자 m 은 '분'입니다.
undef; 라는 부분은, 옵션을 잘못 주었을 때 undef 라는 값을 반환하라는 의미입니다. undef 는 논리적으로는 거짓이고, 숫자도 문자열도 아닌 특수한 값입니다. 변수를 만든 후 아무것도 대입하지 않았다면 undef 라는 값을 가지게 됩니다. 다만 숫자를 계산하는 곳에서는 0처럼 행동하고, 문자열을 다루는 곳에서는 빈 문자열 즉 ""처럼 행동합니다.
여기서는, 에러가 났다는 의미로 undef 를 반환했습니다. 별로 중요한 부분은 아니고, 없어도 되는 코드입니다.
실행 결과:
D:\Z>0.pl
Year : 2006
Month : 07
Day : 21
Hour : 19
Min : 49
Sec : 20
D:\Z>
▶▶ Perl/펄] 어제 날짜 구하기, 전날 날짜 알아내기; Yesterday Date
▶▶ Perl/펄] 오늘 날짜/현재 시간 구하기 함수, 년월일/시분초; Get Print Date Time Current
tag: perl
Perl | 펄