Perl은 스크립트에서 일부를 파이핑하고 일부는 화면으로 파이핑합니다.

Perl은 스크립트에서 일부를 파이핑하고 일부는 화면으로 파이핑합니다.

Perl 스크립트에서 일부 출력을 화면으로 파이프하고 다른 선택된 출력을 어떻게 파이프합니까?

답변1

다른 파일 핸들을 사용합니다.

STDOUT기본적으로 및 가 모두 있습니다 STDERR. Perl의 함수 print는 실제로 print STDOUT.

터미널에는 STDOUT파일 핸들이 제공 1되고 STDERR파일 핸들이 제공됩니다 2.

다음은 각 파일 핸들로 인쇄하고 각각을 /dev/null로 리디렉션하는 예입니다.

$ perl -e 'print STDOUT "foo\n"; print STDERR "bar\n";'
foo
bar
$ perl -e 'print STDOUT "foo\n"; print STDERR "bar\n";' 1> /dev/null
bar
% perl -e 'print STDOUT "foo\n"; print STDERR "bar\n";' 2> /dev/null
foo
  • 첫 번째 명령은 둘 다 인쇄합니다.
  • 두 번째 명령은 버리고 STDOUT인쇄만 합니다.STDERR
  • 세 번째 명령은 버리고 STDERR인쇄만 합니다.STDOUT

자신만의 파일 핸들(예: 로그 파일)을 선언하고 대신 인쇄할 수도 있습니다. 보다 perldoc -f open.

답변2

아마도 Perlipc 문서, 특히 명명된 파이프 섹션을 읽고 싶을 것입니다.

http://perldoc.perl.org/perlipc.html#Named-Pipes

perlipc - Perl 프로세스 간 통신(신호, fifo, 파이프, 안전한 하위 프로세스, 소켓 및 세마포)

외부 프로그램과의 양방향(읽기 및 쓰기) 통신이 필요한 경우 IPC::Open2 또는 IPC::Open3 모듈(표준 Perl lib, 위의 URL에도 설명되어 있음)이 유용할 것입니다.

관련 정보