파일을 올바르게 구문 분석 할 수 없습니다. Glob이 작동하지 않음

박쥐 암살자

기본적으로 정규식과 일치하는 특정 파일이 특정 디렉터리에 있는지 확인하는 Perl 스크립트를 작성하려고합니다. 내 코드는 다음과 같습니다.

use strict;
use warnings;

system ("grep PATH $ENV{MODEL_ROOT}/<....>/paths.tcl > \$MODEL_ROOT/hip_paths.csv");
system("sed -i 's/) /,/g' \$MODEL_ROOT/paths.csv");
system("sed -i 's/set G_L.*,//g' \$MODEL_ROOT/paths.csv");

my @glob;

my $file = "$ENV{MODEL_ROOT}/paths.csv" or die "CSV File is not present\n";
open(my $file_data, '<', $file) or die "Could not open '$file' $!\n";

while (my @line = <$file_data>) {
  system ("printf \"@line\" >> fields"); #For debug
  foreach my $path (@line)
 {   
     $path =~ m/^.*proj\/(.*)\/<blah>/; #To find 'name'
     if (glob ("$path/*0p765v_125c*.ldb")) #Check if file exists in $path with said pattern
     {   
            @glob = glob ("$path/*0p765v_125c*.ldb");
            print "File exists for $1 in path $path: @glob\n"
     } 
     else 
     {
        print "Does not exist for $1 in path $path\n";
     } 
  }
}
close $file_data

paths.csv 는 다음과 같습니다. (TM 및 C 문제로 인해 실제 경로를 게시 할 수 없음)

/(path-to-proj)/proj/name1/version1/abc  
/(path-to-proj)/proj/name2/version2/abc  
/(path-to-proj)/proj/name3/version3/abc  
/(path-to-proj)/proj/name4/version4/abc  
/(path-to-proj)/proj/name5/version5/abc   

(proj 경로)는 영숫자,
proj 는 영숫자,
name <>은 영숫자이며 밑줄을 포함 할 수 있습니다.
version <>은 영숫자입니다.

이 모든 경로에 해당 패턴과 일치하는 파일이 있다는 것을 알고 있습니다. 그러나 내 코드의 결과는 다음과 같습니다.

File exists for name1 in path /(path-to-proj)/proj/name1/version1/abc
: /(path-to-proj)/proj/name1/version1/abc
Does not exist for name2 in path /(path-to-proj)/proj/name2/version2/abc

File exists for name3 in path /(path-to-proj)/proj/name3/version3/abc
: /(path-to-proj)/proj/name3/version3/abc
Does not exist for name4 in path /(path-to-proj)/proj/name4/version4/abc

결과는 '존재 함'과 '존재하지 않음'이 번갈아 나타납니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

Ikegami

연산자 (예 glob:)는 스칼라 컨텍스트 또는 목록 컨텍스트에서 평가되는지 여부에 따라 다르게 작동합니다.

glob스칼라 컨텍스트에서 반복자 역할을합니다. 반환 할 항목이 없음을 나타 내기 위해 undef를 반환 할 때까지 다음 일치 항목을 반환합니다. 논쟁이 바뀌더라도 상관 없습니다.

$ perl -e'for (1..7) { my $glob = glob("*"); CORE::say "$_ $glob"; }'
1 a.xml
2 b.xml
3 
4 a.xml
5 b.xml
6 
7 a.xml

당신은 그것을 원하지 않습니다. 목록 컨텍스트에서 호출하고 싶습니다. 그래서 교체

if (glob ("$path/*0p765v_125c*.ldb")) {
        @glob = glob ("$path/*0p765v_125c*.ldb");

if ( my @ldb_paths = glob("$path/*0p765v_125c*.ldb") ) {

또는

if ( my ($ldb_path) = glob("$path/*0p765v_125c*.ldb") ) {

두 번째 옵션은 첫 번째 일치 만 가져 오며 나머지는 무시합니다. 할당의 왼쪽에있는 괄호는 오른쪽에 필요한 목록 컨텍스트를 만드는 데 중요합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

YAML을 올바르게 구문 분석 할 수 없습니다.

분류에서Dev

읽기 / 쓰기 스트림을 사용하여 이진 파일을 올바르게 구문 분석하고 다시 어셈블 할 수 없습니다.

분류에서Dev

오류 : (41) XML 구문 분석 오류 : 형식이 올바르지 않음 (잘못된 토큰) + 기호 R을 확인할 수 없습니다.

분류에서Dev

Joda 시간이 월을 올바르게 구문 분석하지 않습니다.

분류에서Dev

jquery-데이터를 올바르게 구문 분석 할 수 없습니다.

분류에서Dev

JSON 데이터를 올바르게 구문 분석 할 수 없습니다.

분류에서Dev

PowerShell-파일 이름에서 시작 문자를 구문 분석하여 올바르게 비교할 수 있습니다.

분류에서Dev

인수없이 실행 실패, 입력이 올바르게 구문 분석되지 않음

분류에서Dev

Momentjs 기간이 양수 부호를 올바르게 구문 분석하지 않습니다.

분류에서Dev

목록 필터가 올바르게 작동하지 않는 이유를 파악할 수 없습니다.

분류에서Dev

cmake가 명령 줄 매개 변수의 공백을 올바르게 구문 분석하지 않습니다.

분류에서Dev

Github 페이지 + Jekyll이 마크 다운을 올바르게 구문 분석하지 않았습니까?

분류에서Dev

WCF Post 요청 json 본문을 올바르게 구문 분석 할 수 없습니다.

분류에서Dev

XML은 속성을 올바르게 구문 분석하지 않습니다.

분류에서Dev

Android 다운로드 파일이 패키지 구문 분석 오류를 구문 분석 할 수 없습니다.

분류에서Dev

컨테이너의 ReadItemAsync가 Stack <T> 인스턴스를 올바르게 구문 분석 할 수 없습니다.

분류에서Dev

Xcode 오류 디버그 맵을 구문 분석 할 수 없습니다. 파일이 유효한 개체 파일로 인식되지 않았습니다.

분류에서Dev

솔트는 더 이상 파일을 구문 분석 할 수 없습니다 : 필수 선언 ...이 단일 키 사전으로 형성되지 않았습니다.

분류에서Dev

simplexml_load_string이 올바르게 구문 분석되지 않습니다.

분류에서Dev

CookieStore 구성이 올바르게 작동하지 않을 수 있습니까?

분류에서Dev

키없이 JSON 파일을 어떻게 구문 분석 할 수 있습니까?

분류에서Dev

nginx logwarn을 사용하여 특정 키워드가 포함 된 로그 줄을 올바르게 구문 분석 할 수 없습니다.

분류에서Dev

Ajax가 데이터를 올바르게 구문 분석하지 않습니까?

분류에서Dev

구문 분석 된 Double이 올바르게 작동하지 않는 이유는 무엇입니까?

분류에서Dev

yaml 파일 파이썬을 구문 분석 할 수 없습니다.

분류에서Dev

탐색기에서 cmd-line을 시작할 때 환경 변수가 올바르게 구문 분석되지 않음

분류에서Dev

탐색기에서 cmd-line을 시작할 때 환경 변수가 올바르게 구문 분석되지 않음

분류에서Dev

단순 Java 텍스트 파일이 올바르게 구문 분석되지 않음

분류에서Dev

내 ajax 소스 DataTable이 올바르게 구문 분석되지 않습니까?

Related 관련 기사

  1. 1

    YAML을 올바르게 구문 분석 할 수 없습니다.

  2. 2

    읽기 / 쓰기 스트림을 사용하여 이진 파일을 올바르게 구문 분석하고 다시 어셈블 할 수 없습니다.

  3. 3

    오류 : (41) XML 구문 분석 오류 : 형식이 올바르지 않음 (잘못된 토큰) + 기호 R을 확인할 수 없습니다.

  4. 4

    Joda 시간이 월을 올바르게 구문 분석하지 않습니다.

  5. 5

    jquery-데이터를 올바르게 구문 분석 할 수 없습니다.

  6. 6

    JSON 데이터를 올바르게 구문 분석 할 수 없습니다.

  7. 7

    PowerShell-파일 이름에서 시작 문자를 구문 분석하여 올바르게 비교할 수 있습니다.

  8. 8

    인수없이 실행 실패, 입력이 올바르게 구문 분석되지 않음

  9. 9

    Momentjs 기간이 양수 부호를 올바르게 구문 분석하지 않습니다.

  10. 10

    목록 필터가 올바르게 작동하지 않는 이유를 파악할 수 없습니다.

  11. 11

    cmake가 명령 줄 매개 변수의 공백을 올바르게 구문 분석하지 않습니다.

  12. 12

    Github 페이지 + Jekyll이 마크 다운을 올바르게 구문 분석하지 않았습니까?

  13. 13

    WCF Post 요청 json 본문을 올바르게 구문 분석 할 수 없습니다.

  14. 14

    XML은 속성을 올바르게 구문 분석하지 않습니다.

  15. 15

    Android 다운로드 파일이 패키지 구문 분석 오류를 구문 분석 할 수 없습니다.

  16. 16

    컨테이너의 ReadItemAsync가 Stack <T> 인스턴스를 올바르게 구문 분석 할 수 없습니다.

  17. 17

    Xcode 오류 디버그 맵을 구문 분석 할 수 없습니다. 파일이 유효한 개체 파일로 인식되지 않았습니다.

  18. 18

    솔트는 더 이상 파일을 구문 분석 할 수 없습니다 : 필수 선언 ...이 단일 키 사전으로 형성되지 않았습니다.

  19. 19

    simplexml_load_string이 올바르게 구문 분석되지 않습니다.

  20. 20

    CookieStore 구성이 올바르게 작동하지 않을 수 있습니까?

  21. 21

    키없이 JSON 파일을 어떻게 구문 분석 할 수 있습니까?

  22. 22

    nginx logwarn을 사용하여 특정 키워드가 포함 된 로그 줄을 올바르게 구문 분석 할 수 없습니다.

  23. 23

    Ajax가 데이터를 올바르게 구문 분석하지 않습니까?

  24. 24

    구문 분석 된 Double이 올바르게 작동하지 않는 이유는 무엇입니까?

  25. 25

    yaml 파일 파이썬을 구문 분석 할 수 없습니다.

  26. 26

    탐색기에서 cmd-line을 시작할 때 환경 변수가 올바르게 구문 분석되지 않음

  27. 27

    탐색기에서 cmd-line을 시작할 때 환경 변수가 올바르게 구문 분석되지 않음

  28. 28

    단순 Java 텍스트 파일이 올바르게 구문 분석되지 않음

  29. 29

    내 ajax 소스 DataTable이 올바르게 구문 분석되지 않습니까?

뜨겁다태그

보관