디렉토리에 저장된 파일 이름의 시작 부분과 일치해야하는 Perl 변수에 저장된 문자열이 있습니다.Perl의 grep을 사용하여 이름에 패턴을 일치시켜 특정 파일을 찾는 방법
이 변수를 사용하여 Perl의 grep을 사용하여 디렉토리에서이 패턴과 일치하는 파일을 찾습니다. 여기에 내가 뭐하는 거지입니다 :
opendir (DIR, "data/testroot/") or die "$!";
@file1 = <$f1/*.hdf>
foreach(@file1){
$patt = substr(basename($_),0,$ind);
$file2 = grep {/${patt}*\.hdf/} readdir(DIR);
#other code follows.......
}
closedir(DIR);
첫째, 폴더 f1
에있는 모든 파일의 목록을 얻을하고 배열 @file
에 저장. 그런 다음 @file1
의 각 항목에 대해 처음 몇자를 추출하여 $patt
에 저장 한 다음 에 저장된 것과 일치하는 시작 패턴을 가진 다른 폴더 data/testroot/
에서 비슷한 파일을 선택하려고합니다.
해당 grep $file2 = grep {/${patt}*\.hdf/} readdir(DIR);
이 작동하지 않습니다.
예 '$ {patt}'다음에 하나 이상의 문자를 입력하고 '.hdf'를 입력하고 싶습니다. 덕분에 그 부분을 얻었습니다. 그러나'$ file2 = grep {/${patt}.*\.hdf}/} readdir (DIR);과 같이 줄을 바꿀 때 여전히 파일을 선택하지 않습니다. 뭔가 잘못 됐어. – srsci
아니요, 내 실수는 미안합니다. 나는 거기에 여분의'}'을 가지고있어서 문제를 일으켰다. 고마워. 나는 새로운 것을 배웠다. – srsci