현재 2 또는 3 개의 명령 줄 인수를 사용하는 프로그램이 있습니다. find.pl [i] <perlRegexPattern> <listOfFiles>.
이제 find.pl proj1 Data
또는 find.pl -i proj1 Data
을 전달하면 프로그램이 if 문을 통과하지만 내 프로그램이 받아들이려고 find.pl -i ".*proj1.*" DataA/*
같은 것을 받아 들일 때 제 프로그램은 제 2 if 문을 지나치지 않게합니다. 필자는 이러한 매개 변수를 매개 변수로 전달한 다음 내 프로그램에서 사용하는 방법을 잘 모릅니다. 여기Perl이 명령 줄 인수를 전달합니다.
#!/usr/bin/perl -w
if(@ARGV < 2){
print "\n2) Usage: find.pl [-i] <perlRegexPattern> <listOfFiles>\n\n";
exit;
}
if(@ARGV > 3){
print "\n3) Usage: find.pl [i] <perlRegexPattern> <listOfFiles>\n\n";
exit;
}
if(@ARGV == 3 && $ARGV[0] ne "-i"){
die "\n4) Usage: find.pl [i] <perlRegexPattern> <listOfFiles>\n\n";
}
if ($#ARGV eq 1){
print "normal case\n";
my ($pattern, $filelist) = @ARGV;
print "$pattern $filelist\n";
opendir(DIR , $filelist) or die "\nCannot open directory $filelist\n\n";
while (($fp = readdir(DIR))){
if($fp =~ m/$pattern/){
print "$fp\n";
}
elsif($fp =~ m/.*\.txt/){
print "$fp is a text file\n"; #Still working on this part
open(FILE, '<' , $fp) or die ("\nCould not open file $fp\n\n");
while(<FILE>){
if($_ =~ m/$pattern/){
print "$fp : $_ : line pattern match\n";
last;
}
}
close(FILE);
}
}
}
else{
print "-i case\n";
my ($pattern, $filelist) = @ARGV[1 .. 2];
print "$pattern $filelist\n";
#TODO
}
둘 이상의 파일이 전달 될 때'exit'를 호출합니다. ('@ARGV> 3') ... – ikegami
@ikegami 나는 당신이 의미하는 것을 얻지 못합니다. –
'exit'를 호출하지 않았다면 프로그램이 종료되지 않을 수도 있습니다. – ikegami