perforce 명령을 실행하고 결과를 변수 $command
에 저장하는 Perl 스크립트가 있습니다.Perl을 사용한 시스템 명령 실행
그러면 파일 log.txt
에 저장되고 정규식을 사용하여 관련 데이터가 추출됩니다. 나 혼자 그 명령을 실행하면
다음과 같은 것들이 튀어 다음과 같이
4680 p4exp/v68 PJIANG-015394 25:34:19 IDLE none
8869 unnamed p4-python R integration semiconductor-project-trunktip turbolinuxclient 01:33:52 IDLE none
8870 unnamed p4-python R integration remote-trunktip-osxclient 01:33:52
코드는 간다 :
#! /usr/bin/env perl
use strict;
use warnings;
use autodie;
my $command = qx |p4 monitor show -ale|;
open FH, '>>', "log.txt";
print FH $command;
close FH;
open my $log_fh, '<', '/root/log.txt';
my %stat;
while ($line = <$log_fh>) {
chomp $line;
next if not $line =~ /(\d+)\s+/;
my $killid = $1;
if ($line =~ /R\s+integration/ and $line =~ /IDLE\s+none$/) {
my $killid_details = $line;
$stat{$killid} = $killid_details;
}
}
close $log_fh;
my $killpro;
foreach my $kill (keys %stat) {
print "$kill\n";
}
다음은 숫자 8869하지만 어떻게 로그 않고 그것을 수행하는 방법을 가져옵니다. txt. 어레이를 사용하는 것이 더 좋은 방법일까요, 해시가 괜찮습니까?
나는 아직도 배우기 때문에 저를 정정하십시오.
EOL 앵커를 사용하고 있으므로 두 개의 별도 정규식을 수행 할 필요가 없습니다. 그것은 간단하게'/ R \ s + integration. * IDLE \ s + none $ /'에 결합 될 수 있고 그것의 한 줄이더라도'/ R [^ \ S \ n] + 통합을 사용할 것입니다. * IDLE [^\ S \ n] + 없음 $ /'을 선택하십시오. – sln