2011-10-03 4 views
1

가능한 중복 :
How can I pass command-line arguments to a Perl program?펄 입력 다중 파일

내가 명령 줄에서 실행뿐만 아니라 3 개 개의 입력 파일과 하나 개의 출력을 제공해야 펄 스크립트가 있습니다. 여러 파일에 perl 스크립트를 여러 번 사용하는 래퍼 스크립트를 작성하고 있으므로 STDIN을하고 싶지 않습니다.

그래서, 지금이 있습니다

open (FICHIER, "<$file1") || die "file not found"; 
chomp($file1); 
@b=<FICHIER>; 

open (SPECIES, "<$file2"); 
$species=<SPECIES>; 
chomp($species); 

open (FILE3, "<$file3>"); 
$file3 = <FILE3>; 
chomp($file3); 

open (OUTFILE, ">$outfile"); 
chomp($outfile); 

나는 이런 식으로 뭔가 수행해야합니다

을 펄 myscript.pl textfile1 textfile2 textfile3 OUTPUTFILE

내가 textfile1를 나타 내기 위해 $ FILE1이 필요, 텍스트 파일 2의 경우 $ file2 등

미리 감사드립니다.

마크

답변

1

주 프로그램에서 시프트 기능은 명령 행 매개 변수의 목록 인 @ARGV의 인수를 가져옵니다. 따라서 다음과 같이 말할 수 있습니다.

my $file1 = shift || die "Need 4 file names"; 
my $file2 = shift || die "Need 4 file names"; 
my $file3 = shift || die "Need 4 file names"; 
my $outfile = shift || die "Need 4 file names"; 

또한 "use strict;" 및 "경고 사용" 우수 사례이며 세 가지 주장이 열려 있습니다. ::

open my $FICHIER, '<', $file1 or die "$file1 - $!";