각 행에서 두 번째 값이 날짜 인 로그를 구문 분석하는 Perl 스크립트를 작성하려고합니다. 스크립트는 입력 로그 파일, 시작 시간 및 종료 시간이라는 세 가지 인수를 취합니다. 시작 및 종료 시간은 두 번 사이에있는 각 라인의 특정 값을 파싱하는 데 사용됩니다. 하지만 이것을 제대로 실행하려면 시작과 종료 시간을 에포크 시간으로 변환합니다. 내가 겪고있는 문제는 루프 'i'값을 로그 파일과 비교할 정상적인 시간으로 다시 변환하는 것입니다. localtime($i)
을 실행 한 후에는 값을 인쇄하고 실제 값이 아닌 인쇄 된 참조 만 보게됩니다. 난 단지의 핵심 펄 모듈에 액세스 할 수 있으며Perl에서 기수 시간을 정상 시간으로 변환하려면 어떻게해야합니까?
Time::tm=ARRAY(0x8cbbd40)
Time::tm=ARRAY(0x8cbc1a0)
Time::tm=ARRAY(0x8cbbe80)
Time::tm=ARRAY(0x8cbc190)
Time::tm=ARRAY(0x8bbb170)
Time::tm=ARRAY(0x8cbc180)
Time::tm=ARRAY(0x8cbbf30)
Time::tm=ARRAY(0x8cbc170)
Time::tm=ARRAY(0x8cbc210)
Time::tm=ARRAY(0x8cbc160)
1275760356 1275760773
: 같은
이#!/usr/bin/perl
use strict;
use warnings;
use Time::Local;
use Time::localtime;
use File::stat;
my $sec = 0;
my $min = 0;
my $hour = 0;
my $mday = 0;
my $mon = 0;
my $year = 0;
my $wday = 0;
my $yday = 0;
my $isdst = 0;
##########################
# Get the engine log date
##########################
my $date = `grep -m 1 'Metric' "$ARGV[0]" | awk '{print \$2}'`;
($year,$mon,$mday) = split('-', $date);
$mon--;
#########################################
# Calculate the start and end epoch time
#########################################
($hour,$min,$sec) = split(':', $ARGV[1]);
my $startTime = timelocal($sec,$min,$hour,$mday,$mon,$year);
($hour,$min,$sec) = split(':', $ARGV[2]);
my $endTime = timelocal($sec,$min,$hour,$mday,$mon,$year);
my $theTime = 0;
for (my $i = $startTime; $i <= $endTime + 29; $i++) {
#print "$startTime $i \n";
$theTime = localtime($i);
#my $DBInstance0 = `grep "$hour:$min:$sec" "$ARGV[0]"`;# | grep 'DBInstance-0' | awk '{print \$9}'`;
#print "$DBInstance0\n";
print "$theTime\n";
}
print "$startTime $endTime \n";
출력은 같습니다 여기
내가 지금까지 가지고있는 스크립트입니다 (이 진행중인 작품입니다) 다른 사람을 설치할 수 없습니다.
이 숙제인가? 그리고 "다른 사람들을 설치할 수 없다"는 것은 단순히 [당신은 [CPAN을 사용할 수 없습니다!] (http://www.shadowcat.co.uk/blog/matt-s-trout/but-i)를 읽지 않은 것을 의미합니다. -cant-use-cpan /) – Ether
이것은 작업을위한 더 큰 스크립트의 시작이며, 필자의 작업은 코어 펄 모듈 만 사용하도록 허용 할 것이다. 우리는 방금 Perl을 사용하기 시작했으며 코어 모듈이 승인되었고 다른 모듈을 테스트하고 있지만 모듈 사용을 요청하고이를 사용할 수있게되기까지 3 개월의 대기 시간이 있습니다. –
@Matt :이 경우 이력서를 http://careers.stackoverflow.com에 제출하는 것이 좋습니다. – Ether