ARGV
을 사용하여 Perl 스크립트에 전달할 인수 목록이 있습니다. 네 번째 인수는 서버의 이름이지만 servers.txt
이라는 서버 목록이있는 텍스트 파일을 전달하려고합니다. 그걸 어떻게 전달하고 ARGV
의 인수로 사용합니까?Perl의 텍스트 파일에서 ARGV에 인수를 전달하는 방법
샘플 파일 servers.txt
:
server1
server2
server3
근무 코드 :
# usage example: ./test.pl Jul 05 2010 <server> <logfile>
# $ARGV[0]=Jul
# $ARGV[1]=05
# $ARGV[2]=2010
# $ARGV[3]=server
# $ARGV[4]=/pathoffile
use strict;
use warnings;
my($mon,$day,$year,$server,$file) = @ARGV;
open(my $fh,"ssh $server cat $file |") or die "can't open log $server:$file: $!\n";
while (my $line = <$fh>) {
if ($line =~ /.* $mon $day \d{2}:\d{2}:\d{2} $year:.*(ERROR:|backup-date=|backup-size=|backup-time=|backup-status)/) {
print $line;
}
}
생산 실행
을 실행 보여줍니다 당신의
test.pl
이 스탠드를-에 사용 읽기 때문에, 당신이 누락 된 부분은 정확히 무엇입니까? 원격 서버에서 파일을 cat하려고하거나 ssh 파이프를 통해 파일을 쓰고 싶습니까, 아니면 ...? – Ether@ 에테르 : 예, 로그 파일에서 정규식을 위해 원격으로 고양이를 읽고 있습니다. servers.txt 파일을 열고 while 루프에도 배치합니까? while 루프를 다른 루프 내부에 두는 것이 효율적입니까? – jdamae