카테고리 없음

[펄] Perl을 사용하여 여러 파일에 헤더 삽입

행복을전해요 2021. 2. 17. 07:55

stackoverflow에 오신 것을 환영합니다!

-e xxxx.pl 파일에 스크립트를 제공하는 대신 명령 줄에 제공

-p는 sed와 비슷하게 파일 이름 인수를 반복하지만 스크립트 끝에 $ _의 내용을 인쇄합니다.

위의 두 가지는 -pe로 결합됩니다.

-i 파일을 제자리에서 편집하고 출력을 동일한 파일에 기록함을 나타냅니다. 실제로 Perl은 입력 파일의 이름을 변경하고 원래 이름으로 새 파일에 쓰는 동안 이름이 변경된이 버전에서 읽습니다.

-0은 전체 입력 파일을 한 줄로 읽을 수 있도록 레코드 끝 문자 (기본적으로 \ n)를 재정의합니다.

1 *은 스크립트에 대한 명령 줄 인수이므로 1로 시작하는 이름을 가진 파일을 수정하고 있다고 생각합니다 (* .c 또는 수정하려는 파일 유형에 따라 무엇이든 사용할 수 있음)

print $ h는 스크립트의 "주"인 변수 $ h를 인쇄합니다. 헤더 파일의 내용 (이 한 줄의 의도)으로 초기화 된 경우 헤더 파일을 인쇄합니다.

BEGIN {여기에 일부 코드} 이것은 스크립트가 시작되기 전에 실행하는 항목입니다. 이것이 내가 곤란한 곳입니다. 이것은 유효한 펄 코드처럼 보이지 않습니다

그래서 기본적으로 :-이것은 아마도 전체 헤더 파일 (-0 때문에)을 BEGIN 블록에 넣고 변수 $ h에 저장할 것입니다.-명령 줄 끝에 와일드 카드로 지정된 모든 파일을 반복합니다. file : 헤더를 인쇄 ($ h 인쇄) 한 다음 hte 파일 자체를 인쇄합니다 (-pe 때문에).

따라서 스크립트를 철자하는 것과 동일합니다.

$h = gets content of the entire header file
while (<>){ #loop implied by -pe, iterates over all the 1* files
    # the main contents of the "-e" script are inserted below as part of executing -pe
        print h$; #print the header we saved 
            print $_; # implied by -pe, and since we are using -0, this prints the entire content in one shot
                # end of the "-e" script. again it was a single print $h statement, the second print is implied by -pe
                } 
                

설명하기가 조금 어렵습니다. 자세한 내용은 perlrun 문서를 참조하십시오.

BEGIN 블록이 옳지 않다고 생각하기 때문에 이것은 100 % 완전한 설명이 아닙니다. 내 우분투 컴퓨터에서 시도했지만 구문에 대해서도 불평했습니다.



출처
https://stackoverflow.com/questions/22079811