mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Saturday, August 25, 2007

Perl 펄, 타이머 Timer 만들기 소스, 경과 시간 스톱와치


Perl에서 간단한 타이머 Timer 를 만드는 방법입니다. 스톱와치 또는 삶은 계란이나 컵라면용 같은 주방용 타이머와도 비슷합니다. 아래 소스는, 사용자가 아무 키나 누를 때까지 기다린 후, 아무 키나 누르면 그때까지 지난 시간 즉 경과 시간을 화면에 "시분초" 형식으로 출력합니다.

디버깅을 많이 했지만 버그가 있을 수 있습니다. 이 소스를 응용하여 중요한 프로그램을 만들 때에는 주의가 필요합니다.

Timer, 초 단위 hh:mm:ss 로 출력 예제


타이머 소스 파일명: example.pl
#!/usr/bin/perl
use strict; use warnings;


  codeTimer("on");
  print "타이머 켰습니다. 아무키나 누를 때까지 경과 시간을 측정합니다.\n";


  <STDIN>; # 사용자가 아무키나 누를 때까지 대기


  # 타이머 끈 후, 경과 시간 출력
  print "경과 시간: " . codeTimer("off") . "\n";




#### 이하는 타이머에 필요한 함수들

{ # $old_time 을 static local variable 로 만들어 주기 위한 bare block
   my $old_time;
   sub codeTimer {
      if ($_[0] eq "on")  { $old_time = time(); } # 타이머 켜기
      if ($_[0] eq "off") { secToHHMMSS(time() - $old_time); } # 타이머 끄고 시분초 저장
   }
}


sub secToHHMMSS { # 정수로 된 초(seconds)를 받아들여 "06:17:20" 등의 형식의 문자열로 시분초를 리턴
   my ($hour, $min, $sec);

   $sec  = $_[0] % 60;
   $min  = $_[0] / 60 % 60;
   $hour = $_[0] / 3600;

   sprintf "%02d:%02d:%02d", $hour, $min, $sec;
}


실행 결과 화면:
D:\Z>example.pl
타이머 켰습니다. 아무키나 누를 때까지 경과 시간을 측정합니다.

경과 시간: 00:00:04

D:\Z>example.pl
타이머 켰습니다. 아무키나 누를 때까지 경과 시간을 측정합니다.

경과 시간: 00:05:12

D:\Z>example.pl
타이머 켰습니다. 아무키나 누를 때까지 경과 시간을 측정합니다.

경과 시간: 24:00:06

D:\Z>


맨 마지막의 24:00:06 이라는 결과는 컴퓨터의 시계를 하루 앞으로 변경한 후 강제로 얻은 결과입니다.



컵라면 타이머 (온라인 버전):
▶▶ 컵라면 타이머; 인터넷 요리용 타이머, 모래시계 Cooking Timer

스톱워치 (온라인 버전 스톱와치):
▶▶ 스톱워치, 초시계, 온라인 스톱와치, 100분의 1초 Stopwatch




tag: perl
Perl | 펄

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top