문제

Perl은 외부 프로그램을 실행하는 세 가지 방법 (내가 알고있는)을 지원합니다.

system:

   system PROGRAM LIST

에서와 같이 :

system "abc";

다음과 같이 백 티크

`abc`;

다음과 같이 파이프를 통해 실행합니다.

open ABC, "abc|";

그들 사이의 차이점은 무엇입니까? 내가 아는 것은 다음과 같습니다.

  1. 백틱과 파이프를 사용하여 명령의 출력을 쉽게 얻을 수 있습니다.
  2. 그게 다야 (향후 편집에서 더?)
도움이 되었습니까?

해결책

  • System () : 실행 명령 및 명령을 반환합니다. 종료 상태
  • 백 티크 : 명령을 실행하고 명령을 반환합니다 산출
  • 파이프 : 명령을 실행하고 사용할 수 있습니다 손잡이로

또한 Backticks는 실행 된 프로그램의 STDOut을 변수로 리디렉션하고 시스템은이를 기본 프로그램의 STDOUT로 보냅니다.

다른 팁

그만큼 perlipc 문서화는 Perl의 다른 프로세스와 상호 작용할 수있는 다양한 방법을 설명하고 Perlfunc의 공개 문서 파이프 파일 핸들을 설명합니다.

  • 시스템은 출력을 표준 출력 (및 오류)으로 보냅니다.
  • 백 티크는 표준 출력을 캡처하고 반환합니다 (표준 오류는 아님).
  • 파이프 오픈을 사용하면 출력을 캡처하여 파일 핸들에서 읽거나 파일 핸들에 인쇄하여 외부 명령의 입력으로 사용할 수 있습니다.

크로스 플랫폼 에지 케이스로 이러한 세부 사항을 처리하는 모듈도 있습니다.

시스템은 또한 응용 프로그램의 종료 값을 반환하고 있습니다 (Windows에서 오류 레벨). 파이프를 읽고 닫으면 추가 코드가 추가되므로 파이프는 사용하기가 조금 더 복잡합니다. 마지막으로, 그들은 다른 일을하는 다른 구현을 가지고 있습니다. 파이프를 사용하면 실행 된 응용 프로그램과 다시 통신 할 수 있지만 다른 명령은이를 쉽게 허용하지 않습니다.

프로그램의 종료 상태를 얻는 것은 system(). 전화 할 때 close(PIPE), 출구 상태를 반환하고 3 가지 방법 모두에 대한 최신 출구 상태를 얻을 수 있습니다. $?.

또한 주목하십시오

readpipe('...')

와 같다

`...`
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top